我正在尝试在 Prestashop Admin 中进行 ajax 调用:
我创建了一个没有配置页面的模块。它只是在一些后台页面中添加一个按钮,我试图对我的模块文件进行 ajax 调用但没有成功。
在前端进行 ajax 调用是有效的(我在我的 modules/mymodule/controller/front/ 目录中添加了一个 ajax.php 文件),我尝试为管理员做同样的事情,但它根本不起作用。
我做了什么:
- 从actionAdminControllerSetMedia加载 js 文件就可以了
- 在 composer.json 文件中添加这个:
"autoload": {
"psr-4": {
"MyModule\\Controller\\": "controllers/admin/"
},
"config": {
"prepend-autoloader": false
},
- 使用此代码创建了controllers/admin/ajax.php文件(基于此文档代码):
namespace MyModule\Controller;
use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController;
class DemoController extends FrameworkBundleAdminController
{
public $auth = false;
public $ssl = true;
public $ajax = true;
public $errors = false;
public $message;
public function __construct()
{
parent::__construct();
}
public function initContent()
{
parent::initContent();
}
public function postProcess()
{
PrestaShopLogger::addLog("MODULE CONTROLLER OK ", 1);
}
public function displayAjax()
{
$this->ajaxDie(json_encode(array('success'=> !$this->errors, 'message' => $this->message)));
}
}
然后我尝试在 js 中以不同的方式调用 ajax,但从未奏效(post 查询返回是来自 prestashop “找不到页面”的消息,带有 http 200 响应。
该文档不是很有帮助,我只能找到旧的消息/方法(从 Prestashop 1.7.5 我可以创建一个自定义管理控制器,但它不起作用),有人可以解释我要遵循的步骤?
谢谢