Prestshop 1.6模块自定义搜索视图

时间:2017-08-22 07:57:50

标签: php module prestashop-1.6

大家好,我正在为Prestashop 1.6编写一个高级搜索模块,该模块会查找产品与自定义表格中加载的其他功能之间的关联。

我写了一个ModuleFrontController,表单提交后必须返回结果页面,但视图没有基本布局。

initContent()方法中,我按照Official documentation

中的说法调用此函数
$this->setTemplate('advanced-search.tpl');

但它只显示了产品列表,没有别的,没有标题,没有页脚,没有侧边栏......

这是我的代码:

class MyModuleSearchModuleFrontController extends ModuleFrontController
{

    protected static $config_post_submit_values = ['action'];

    public function initContent()
    {

        parent::initContent();

        switch (Tools::getValue($this->getPostSubmitValue())) {
            // Filter action
            case 'filter_1':
            /*
             * DO STUFF TO RETRIEVE PRODUCTS
             */
            case 'filter_2':
            /*
             * DO STUFF TO RETRIEVE PRODUCTS
             */
            default:
                $products = [];
        }

        $this->smarty->assign(['products' => $products]);

        $this->setTemplate('advanced-search.tpl');
    }

    /**
     * Get the action submited from the configuration page
     * @return string
     */
    protected function getPostSubmitValue()
    {
        foreach (self::$config_post_submit_values as $value) {
            if (Tools::isSubmit($value)) {
                return $value;
            }
        }

        return false;
    }

}

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为问题在于您无法访问smarty,因为此对象位于context对象内。

所以

$this->smarty->assign(['products' => $products]);

应该是

$this->context->smarty->assign(['products' => $products]);

旁注

启用错误记录,转到/config/defines.inc.php并更改行

define('_PS_MODE_DEV_', false);

define('_PS_MODE_DEV_', true);

请勿在生产/实时环境中启用_PS_MODE_DEV