情况:我需要使用 POST 方法将表单添加到 CMS 页面。我创建了自定义钩子和一个成功显示表单的模块。然后我需要对用户输入错误做出反应,例如。当用户没有输入电子邮件地址时,我需要检测它,再次显示整个页面以及表单,并在用户输入中明确说明“错误”。
问题:问题是再次显示整个页面以及相关信息(例如,关于错误等)。当我添加这种代码时,在模块 PHP 文件中,
return $this->display(__FILE__, 'modulename.tpl');
它(自然)只显示表单,而不是带有表单的整个 CMS 页面。
在此代码的情况下,
Tools::redirectLink('cms.php?id_cms=7');
我无法通过 GET 和 POST 方法传输任何信息。
$_POST['test'] = 1;
Tools::redirectLink('cms.php?id_cms=7&test');
我也尝试分配给 smarty 变量
$smarty->assign('test', '1');
(我需要在创建表单本身的 .tpl 文件中使用它)但没有办法让它工作。
{if isset($test)}...,
{if isset($smarty.post.test)}...,
{if isset($_POST['test'])}... {* neither of these conditionals end up as true *}
即使将 GET 参数分配给 url 也没有影响,因为我猜,无论我是否包含其他参数,都会对某种友好的 url 进行链接重写。( [SHOPNAME]/cms.php?id_cms=7&test
-> [SHOPNAME]/content/7-cmspage-name
)
我的问题是:有没有办法在 prestashop 中“重定向”或“重新加载”当前页面(或通常可能是任何页面)以及我自己的数据?
我有点解释了整个案例,所以我愿意听到比我更好的整体解决方案(也许我完全以错误的方式思考这个案例)。这将是其他可能的答案。