如何使用opencart将一些变量发布到文件中?
我在opencart中发布变量时遇到了一些麻烦。 我想要做的是从结帐/登录页面上的文本字段中获取两个变量,称为名称和地址。 我希望在单击继续按钮时存储输入这两个字段的值,然后发送到结账/访客页面,我想要回显这些变量。 这就是我所做的:
这是我的checkout.tpl文件,我试图将名称和地址变量发送到checkout / guest页面,特别是receive方法:
$('#button-account').live('click', function() { var name = $('#name').val(); var address = $('#address').val(); $.post('index.php?route=checkout/guest/receive', { name: name, address: address});
});
然后在guest.php控制器文件中,我收到已发布的变量,并将它们存储在名为name和address的2个变量中:
public function receive() { $name = $this->request->post['name']; $address = $this->request->post['address']; }
然后在guest.tpl文件中,我回应它们:
当我加载访客页面时,我收到以下错误消息:注意:未定义的变量:第13行的C:\ xampp \ htdocs \ catalog \ view \ theme \ default \ template \ checkout \ guest.tpl中的名称注意:未定义的变量:第14行的C:\ xampp \ htdocs \ catalog \ view \ theme \ default \ template \ checkout \ guest.tpl中的地址。
如果有人能告诉我如何使这个代码工作,我将非常感激。 据我所知,变量要么没有被发送到正确的位置,要么我没有在guest.php页面上正确访问它们。
首先 – 我不明白你为什么要从checkout/login
页面发布一些name
和address
,因为默认情况下没有这样的字段,除非你已添加它们。
无论如何在这种情况下我会这样做 – 通过AJAX发布到receive()
方法。 在这里,我将变量保存到会话中:
public function receive() { $this->session->data['guest_name'] = $this->request->post['name']; $this->session->data['guest_address'] = $this->request->post['address']; }
现在在catalog/controller/checkout/guest.php
, index
方法检查该会话变量,如果设置,则将值存储在$this->data
数组中以呈现给模板:
if(isset($this->session->data['guest_name'])) { // it is enough to check only for one variable and only if it is set $this->data['guest_name'] = $this->session->data['guest_name']; $this->data['guest_address'] = $this->session->data['guest_address']; }
之后您可以在模板中回显这些值(仍然检查是否存在):
现在你应该完成,同时避免任何undefined variable
通知……