PrestaShop - 使用其他参数重新加载CMS页面
情况:我需要使用POST方法将表单添加到CMS页面。我创建了自定义钩子和一个显示成功的表单模块。然后我需要对用户输入错误做出反应,例如。当用户没有输入电子邮件地址时,我需要检测它,再次显示整个页面和表单,并在用户输入中明确指出“错误”。PrestaShop - 使用其他参数重新加载CMS页面
问题:问题是再次显示与连接信息(例如有关错误等)的整个页面。在模块PHP文件中添加这种代码时,它(自然地)只显示表单,而不是整个表单的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“刷新”当前页面(或一般可能是任何网页)在一起吗?
我有种解释整个案例,所以我很乐意听到比我更好的总体解决方案(也许我正在以一种错误的方式思考案例)。这将是其他可能的答案。
最简单的方法是使用JavaScript来验证表单 - 您可以使用jQuery来突出显示错误的字段;提供关于提交失败的视觉反馈。实际上,您不允许用户提交表单(并因此离开页面),直到您对该行为成功感到满意为止。我假设一旦收到成功提交,您将重定向到另一个页面。
有很多文章和如何使用JavaScript,并确实用于表单验证的jQuery。如果您希望保持站点精简并且意味着,那么您可以为CMS控制器提供覆盖,并仅将要使用表单验证的特定页面的脚本排入队列。
如果验证很复杂,那么您可能最好使用AJAX,并通过调用模块来重新加载页面的表单部分。挂钩对于这类事情并不好,所以你可能要考虑使用另一种方法将你的代码注入到cms页面。我已经写了一些关于这种替代方法的文章,可以在我的prestashop blog