footer.php中的Opencart联系表单

时间:2012-05-28 08:04:52

标签: php opencart

我在Opencart主题的页脚中添加了一个基本联系表单。例如,我有:

if (($this->request->server['REQUEST_METHOD'] == 'POST') &&
(isset($this->request->post['enquiry_submit'])) && $this->validate()) {

这可以正常工作。现在的问题是,如果您在不同的页面上,例如客户注册并尝试发送页脚联系表单,我会收到大量未定义的通知。

2 个答案:

答案 0 :(得分:1)

这里的问题很明显:

  1. 您将代码if (($this->request->server['REQUEST_METHOD'] == 'POST') && (isset($this->request->post['enquiry_submit'])) && $this->validate()) {放置到可能作为最后一个处理的FOOTER控制器中。
  2. 在处理页脚控制器之前,在
  3. 之前处理了更多(最多几十个)控制器
  4. 几乎每个控制器都包含以下代码:if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { - 因此几乎每个控制器都会在提交表单之前尝试执行他们的东西...这就是为什么你有一堆Undefined index通知...
  5. 我建议:

    1. 保留页脚控制器以处理显示
    2. 的表单
    3. 在页脚模板中显示表单
    4. 编辑主要联系表单控制器/模板/语言文件:
      1. 在控制器中添加新功能,如footer(),并从页脚控制器移动所有提交后的处理代码
      2. 将所需内容添加到联系人模板和语言文件
    5. 在页脚的联系表单中,确保表单已提交到此网址:http://www.youropencartsite.com/index.php?route=contact/contact/footer
    6. 通过这个您确保当提交来自页脚的联系表单时,用户被重定向到正常的联系表单,其中调用具体方法来处理提交的数据,并且没有其他控制器参与数据处理...

答案 1 :(得分:0)

将代码放在页脚的控制器中似乎是一个好主意,但它确实意味着你最终会尝试发布到页脚本身以保证每个页面都可用,这有点矫枉过正和不良做法。解决这个问题的方法是:

  • 将表格发布到联系我们表格(信息/联系路线)。这样做的好处是已经编码,但这意味着您的客户将被重定向到该页面
  • 使用AJAX发送给联系我们表单或用于处理此问题的新控制器,并使用JSON发回联系人提交的结果。在我看来,这是为您的客户提供更好的选择