Prestashop 1.7.6.2 ajax呼叫后台模块



我在prestashop 1.7中使用select2的ajax时遇到问题。当我尝试写东西时,调用是200,但我出现了错误";控制器Psb2BAjaxModuleAdmin丢失或无效">

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

<?php

namespace ScenarioPSB2BController;
use SymfonyComponentHttpFoundationJsonResponse;
use PrestaShopBundleControllerAdminFrameworkBundleAdminController;
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);
}
} });

});

在我的模块中,我使用了挂钩

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.6+,而不是带有Symfony的1.7。

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

在这种方法中,我使用

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文档中推荐的构建方法。

相关内容

最新更新