Ajax Prestashop:如何将数据从adminpanel模板提交给AdminController?

Ajax Prestashop:如何将数据从adminpanel模板提交给AdminController?,ajax,controller,admin,form-submit,prestashop,Ajax,Controller,Admin,Form Submit,Prestashop,我试图在Prestashop的adminpanel中创建一个自定义页面,店主可以在其中填写即将发生的事件,这些事件将出现在header.tpl页面的一列中。到目前为止,模板和控制器正在工作,其结构基于Stack Overflow的答案: 现在,我在content.tpl(添加了自定义JavaScript和CSS文件)中创建了带有输入字段的表单。下一步是将其发送到控制器以将其保存在数据库中。但我被这部分卡住了。我找不到如何将表单提交给管理员。首先,我用Ajax函数进行了尝试,但没有找到正确的方法

我试图在Prestashop的adminpanel中创建一个自定义页面,店主可以在其中填写即将发生的事件,这些事件将出现在header.tpl页面的一列中。到目前为止,模板和控制器正在工作,其结构基于Stack Overflow的答案:

现在,我在content.tpl(添加了自定义JavaScript和CSS文件)中创建了带有输入字段的表单。下一步是将其发送到控制器以将其保存在数据库中。但我被这部分卡住了。我找不到如何将表单提交给管理员。首先,我用Ajax函数进行了尝试,但没有找到正确的方法。没有Ajax也不会成功

$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: baseUri + '?rand=' + new Date().getTime(),
async: true,
cache: false,
dataType : "json",
data:{
    processEvents: true,
    ajax: 'true',
    controller: 'AdminEvents',
    token: static_token
    },
    //success: function(jsonData){
        //}
    });
这是我尝试过的Ajax函数的一个示例。我的问题:

  • 其他tpl或js文件如何接收baseUri,在哪里 变量集
  • 该行中?rand日期和时间的功能是什么?一种 安全令牌
  • 控制器的url是什么?当我使用
  • 我猜processEvents:true和Ajax:true是为了安全 原因和检查表单是否由Ajax提交
  • 为什么需要发送控制器名称
  • 代币是从哪里来的
有关控制器的问题:

  • 哪些(Prestashop默认函数)可以或确实需要使用?对于 例如:

    等等

    等等

  • 我可以在任何地方使用该函数,或者仅在Init函数中使用

很多问题,请随意回答其中的一部分,我只需要朝着正确的方向努力,搜索和阅读在线文档和互联网并没有给我带来解决方案,也没有给我一点洗脑

编辑:

我自己取得了一些进步:

  • 代币是从哪里来的
  • 控制器的url是什么?当我使用
使用工具getAdminTokenLite和控制器名称,我生成了控制器url:

$token = '?controller=AdminEvents&token='.Tools::getAdminTokenLite('AdminEvents');
要发布到的url是令牌加上域、管理目录和index.php

使用getValue工具,我可以像在PHP中一样使用$_POST[“name”]获取POST数据


因此,它可以工作,但我想它可以更好地与其他普雷斯塔默认工具。

我知道现在回答你已经很晚了,但可以肯定的是,它将帮助其他同伴解决同样的问题

下面是一个关于如何使用BackOffice中的任何控制器在管理面板上的Prestashop 1.6中实现ajax调用的示例(如果您愿意,您也可以使用ajax.php控制器,但我使用这个AdminImportController()

第三方物流部分:

$('#mybtn').click(function(e) {

    var data = $('#datalist').val();

    // Ajax call with secure token 
    $.post( "{$current|escape:'html':'UTF-8'}&token=       {$token|escape:'html':'UTF-8'}",
             { ajax: true, action: "MyFunction", mydata: data } );

            });
在管理控制器端:

    public function ajaxProcessMyFunction()
    {
        // Get param
        $mydata = (int)Tools::getValue('mydata');

        $answer = 0;

        if( $mydata > 0 ) {

            $this->importProfList = Db::getInstance()->executeS(
                "SELECT * FROM  .... LIMIT 1"
            );
            ...
            $answer = $someOperationResult;
        }

        // Response
        die(Tools::jsonEncode(array(
          'answer' => htmlspecialchars($answer)
        )));
  }
测试和工作像一个魅力

问候

Tools::getValue('event_name')
$('#mybtn').click(function(e) {

    var data = $('#datalist').val();

    // Ajax call with secure token 
    $.post( "{$current|escape:'html':'UTF-8'}&token=       {$token|escape:'html':'UTF-8'}",
             { ajax: true, action: "MyFunction", mydata: data } );

            });
    public function ajaxProcessMyFunction()
    {
        // Get param
        $mydata = (int)Tools::getValue('mydata');

        $answer = 0;

        if( $mydata > 0 ) {

            $this->importProfList = Db::getInstance()->executeS(
                "SELECT * FROM  .... LIMIT 1"
            );
            ...
            $answer = $someOperationResult;
        }

        // Response
        die(Tools::jsonEncode(array(
          'answer' => htmlspecialchars($answer)
        )));
  }