0

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

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

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

4

2 回答 2

1

这里的问题很明显:

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

我建议:

  1. 让页脚控制器处理表单显示
  2. 在页脚模板中显示表单
  3. 编辑主要联系表单控制器/模板/语言文件:
    1. 在控制器中添加新功能,footer()并在此处从页脚控制器移动所有提交后处理代码
    2. 将需要的东西添加到联系人模板和语言文件中
  4. 在页脚的联系表单中,确保表单已提交到此 URL http://www.youropencartsite.com/index.php?route=contact/contact/footer:。

这样,您可以确保在提交来自页脚的联系表单时,将用户重定向到正常的联系表单,在该表单中调用一个具体方法来处理提交的数据,并且没有其他控制器参与数据处理......

于 2012-05-28T10:09:31.890 回答
0

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

  • 获取表格以发布到联系我们表格(信息/联系方式)。这具有已经编码的好处,但确实意味着您的客户将被重定向到该页面
  • 使用 AJAX 发送到联系我们表单或用于处理此问题的新控制器,并使用 JSON 发送回联系提交的结果。在我看来,这对您的客户来说是更好的选择
于 2012-05-28T11:06:54.267 回答