Prestashop 1.7.6.2 Ajax呼叫后台办公室模块 [英] Prestashop 1.7.6.2 ajax call backoffice module
问题描述
我在prestashop 1.7中遇到来自select2的ajax问题.当我尝试写入内容时,调用为200,但出现错误控制器Psb2BAjaxModuleAdmin丢失或无效."
I have problem with ajax from select2 in prestashop 1.7. When I try writte something the calling is 200 but I got error "The Controller Psb2BAjaxModuleAdmin is missing or invalid."
我在模块中创建要测试的控制器 modules/psb2b/src/Controller/Psb2BAjaxModuleAdminController.php
I create Controller for test in my module modules/psb2b/src/Controller/Psb2BAjaxModuleAdminController.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 *********/themes/default/js
and in admin directory 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);
}
} });
});
在我的模块中,我使用了钩子
In my module i used 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.6+的控制器,而不是使用Symfony的1.7.
It seems your controller looks more like a 1.6+ one rather than a 1.7 with Symfony one.
我通常在controllers/Admin/my_controller.php中有一个indexAction方法.
I usually have an indexAction method in the controllers/Admin/my_controller.php.
在这种方法中,我使用
Media::addJsDef(array(
'usb_search_token' => admin_link));
));
然后,因为此方法返回一个
Then as this method returns a
return $this->render('@Modules/rmvcolorgrid/views/admin/my_file.html.twig', [])
URLs可用于views/js/back.js中的js文件.
the URL is available for the js file in views/js/back.js.
您应该查看 PS文档,了解构建此文档的推荐方法.
You should have a look at PS docs for the recommended way to build this.
这篇关于Prestashop 1.7.6.2 Ajax呼叫后台办公室模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!