大家早上好,
我正在为prestashop 1.7开发一个模块,目前在我的模块的主类中截取postprocess方法时遇到了问题。
我需要检查提交表单(这是在用户配置文件页面,在那里我设置个人信息)。
据我所知,在表单提交中,在类中调用的第一件事正是postProcess ()方法,它负责验证从表单接收到的数据(如果我错了,请纠正我的错误)。
问题是,当我提交表单时,它没有进入postPorcess ()方法(我检查了一个骰子(“测试”),它甚至没有显示后者),而如果我通过调用钩子中的方法人员来进行所需的检查,
你能告诉我我哪里错了吗?
非常感谢,祝您有愉快的一天。
丹尼尔。
发布于 2018-08-31 16:56:39
丹尼尔
这可能是一个端点问题,但是,如果您确定只通过这个类处理请求,只需使用Tools::getValue('something_in_form') / Tools::isSubmit('var')来检查它是否已发送。
你并不真的需要应用这个。如果您需要示例,您应该检查Prestashop的本机模块或管理控制器,因为它取决于您需要在哪里执行此操作。
经过几年的模块开发后,我的想法是,您应该像使用API和JSON中的do a response一样使用模块前端控制器端点,如下所示:
<?php
class DummyModuleNameAjaxModuleFrontController extends ModuleFrontController
{
public function initContent()
{
$response = array();
require_once _PS_MODULE_DIR_.'dummymodulename/dummymodulename.php';
$mod = new dummymodulename;
if (Tools::isSubmit('action') && Tools::isSubmit('var') && Tools::getValue('var') == $mod->getSomethingForSecurity()) {
$context = Context::getContext();
$cart = $context->cart;
switch (Tools::getValue('action')) {
case 'dummy_action_name':
// Don't forget to type it with an INT or secure this entry with strip_tags
$my_var = Tools::getValue('var');
break;
default:
break;
}
}
echo Tools::jsonEncode($response);
die;
}
}https://stackoverflow.com/questions/52111669
复制相似问题