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