模块创建:后期处理问题

时间:2018-08-31 08:43:28

标签: module prestashop prestashop-1.7

大家早安,

我正在为prestashop 1.7开发一个模块,此刻我在拦截模块主类中的后处理方法时遇到问题。

我需要对提交表单(位于用户个人资料页面上设置个人信息的页面)进行检查。

据我了解,在提交表单的过程中,在类中调用的第一件事就是postProcess()方法,该方法负责验证从表单提交的数据只是顺从的(如果我是错误的。)

问题是,当我提交表单时,它没有输入postPorcess()方法(我检查了模具(“测试”),甚至没有显示后者),而如果我做了检查,我需要通过在挂钩内调用我的方法人员,

你能告诉我我哪里错了吗?

非常感谢,祝您有愉快的一天。

丹尼尔。

1 个答案:

答案 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;
  }
}