当前位置: 首页 > 知识库问答 >
问题:

Prestashop1.7.6.2ajax调用后台模块

宁良平
2023-03-14

我对prestashop 1.7中select2中的ajax有问题。当我尝试写一些东西时,调用是200,但我得到错误“控制器Psb2BAjaxModuleAdmin丢失或无效。”

我在模块modules/psb2b/src/Controller/psb2bajaxmoduledmincontroller中创建了用于测试的控制器。php

<?php


namespace Scenario\PSB2B\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController;

class Psb2BAjaxModuleAdminController extends FrameworkBundleAdminController
{
    public function __construct()
    {
        parent::__construct();
    }
 
    public function initContent()
    {
        parent::initContent();

    return $this->ajaxDie(json_encode("test"));

    }
    
    public function postProcess()
    {
        PrestaShopLogger::addLog("MODULE CONTROLLER OK ", 1);
    }

    public function displayAjax()
    {
            $usb_search_token = $this->generateUrl("psb2bAjaxAdmin");

           return $this->ajaxDie(json_encode("test"));
    }

}

在admin目录admin*********/themes/default/js中

$(document).ready(function(){
    $('#category_features').select2({
      width: 'resolve',
      ajax: {
        type: 'POST',
        url: usb_search_token,
        dataType:'json',
        delay: 250,
          data: function (params) {
              return {
                  q: params.term // search term
              };
          },
          success: function (result) {
              console.log(result);
          }
  } });


});

在我的模块中,我使用了hook

public function hookActionAdminControllerSetMedia()
{

    MediaCore::addJsDefL('usb_search_token', $this->context->link->getAdminLink('Psb2BAjaxModuleAdmin'));
    $this->context->controller->addCSS(_PS_BO_ALL_THEMES_DIR_ . 'default/js/select2-full/dist/css/select2.min.css','all');
    $this->context->controller->addJS(_PS_BO_ALL_THEMES_DIR_ . 'default/js/select2-full/dist/js/select2.min.js');
    $this->context->controller->addJS(_PS_BO_ALL_THEMES_DIR_ . 'default/js/tree.js');

}

共有1个答案

惠野
2023-03-14

您的控制器看起来更像是1.6版本,而不是带有Symfony的1.7版本。

我通常在controllers/Admin/my_controller中有一个索引方法。php。

在这个方法中,我使用一个

Media::addJsDef(array(
'usb_search_token' => admin_link));
));

然后,由于此方法返回

return $this->render('@Modules/rmvcolorgrid/views/admin/my_file.html.twig', [])

该URL可用于views/js/back中的js文件。js。

您应该看看PS文档,以了解构建此文档的推荐方法。

 类似资料:
  • Fire-and-forget 的调用方法极其简单。正如您从 快速开始 一节中了解到,您只需要传递一个具有相应方法和参数的lambda表达式: BackgroundJob.Enqueue(() => Console.WriteLine("Hello, world!")); Enqueue 方法不会立即调用目标方法,而是运行以下步骤: 序列化目标方法及其所有参数。 根据序列化的信息创建一个新的后台任

  • 我已经创建了一个Prestashop Backoffice模块,但在单击菜单中的模块选项卡时,我发现错误:在此处输入图像描述404页面未找到? 我想在点击模块选项卡上创建一个模板,并在那里显示一些文本。

  • 获取用户列表 接口 GET https://cloud.minapp.com/userve/v1/miniapp/user-profile/ 参数说明 参数 类型 必填 说明 created_at String N 用户创建的时间,值为时间戳。查询创建时间大于等于 2017-01-01 的用户 created_at__gte=1483228800,查询创建时间小于等于 2017-01-01 的用户

  • 后台模板 自定义后台栏目列表页 自定义后台信息新增页 自定义后台信息编辑页 方法1(针对所有属于此模型的栏目) 修改模型信息 方法2(仅针对当前栏目) 修改栏目信息 修改完成之后 栏目列表页 在/app/Application/Content/View/Listtemplate/里添加对应的名字的文件 信息新增页 在/app/Application/Content/View/Addtempla

  • 当用户未连接到xmpp时,我正在使用FCM通知进行聊天。 FCM中有两种通知模式1。通知消息2。数据消息 如果我的应用程序最近被清除,我将不会使用数据消息作为通知消息 这种方法适用于除奥利奥以外的所有版本。 对于Oreo,我只有在应用程序未连接到xmpp且处于前台时才会收到通知。我的onMessageReception方法正在被调用。 但当该应用程序仅为奥利奥而被删除或从最近的应用程序中删除时,情