大家早安,
我正在为prestashop 1.7开发一个模块,此刻我在拦截模块主类中的后处理方法时遇到问题。
我需要对提交表单(位于用户个人资料页面上设置个人信息的页面)进行检查。
据我了解,在提交表单的过程中,在类中调用的第一件事就是postProcess()方法,该方法负责验证从表单提交的数据只是顺从的(如果我是错误的。)
问题是,当我提交表单时,它没有输入postPorcess()方法(我检查了模具(“测试”),甚至没有显示后者),而如果我做了检查,我需要通过在挂钩内调用我的方法人员,
你能告诉我我哪里错了吗?
非常感谢,祝您有愉快的一天。
丹尼尔。
答案 0 :(得分:1)
丹尼尔,
这可能是一个端点问题,但是,如果您确定只通过此类处理请求,则只需使用Tools :: getValue('something_in_form')/ Tools :: isSubmit('var')来检查它是否为已发送。
您实际上不需要应用此代码。如果您需要示例,则应检查Prestashop的本机模块或Admin控制器,因为它在很大程度上取决于您需要执行此操作的地方。
经过几年的模块开发,我的想法是,您应该像使用API那样使用模块前端控制器端点,并像下面的示例一样在JSON中进行响应:
<?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;
}
}