大家好,我正在为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;
}
}
提前感谢您的帮助!
答案 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
。