2012-12-16 06:38
浏览 115


I'm having some trouble posting variables within opencart. What I'm trying to do is to grab two variables from text fields on the checkout/login page, called name and address. I want the values entered into these two fields to be stored when the continue button is clicked, and then sent to the checkout/guest page, where i want to echo out these variables. Here is what i have done:

Here is my checkout.tpl file, where I am attempting to send the name and address variables to the checkout/guest page, specifically to the receive method:

$('#button-account').live('click', function() {
  var name = $('#name').val();
  var address = $('#address').val();
  $.post('index.php?route=checkout/guest/receive', { name: name, address: address});


Then on the guest.php controller file, I receive the posted variables, and store them in 2 variables called name and address:

public function receive() {
$name = $this->request->post['name'];
$address = $this->request->post['address'];

Then on the guest.tpl file, I echo them out:

echo $name;
echo $address;

When I load the guest page, I get the following error message: Notice: Undefined variable: name in C:\xampp\htdocs\catalog\view\theme\default\template\checkout\guest.tpl on line 13 Notice: Undefined variable: address in C:\xampp\htdocs\catalog\view\theme\default\template\checkout\guest.tpl on line 14.

If anyone can tell me how to make this code work, I would be very grateful. From what I can tell the variables are either not getting sent to the right place, or i am not accessing them correctly on the guest.php page.

图片转代码服务由CSDN问答提供 功能建议

我在opencart中发布变量时遇到了一些麻烦。 我要做的是从结帐/登录页面上的文本字段中获取两个变量,称为名称和地址。 我希望在单击继续按钮时存储输入这两个字段的值,然后发送到结账/访客页面,我想要回显这些变量。 这就是我所做的:

这是我的checkout.tpl文件,我试图将名称和地址变量发送到checkout / guest页面,特别是receive方法:

 var name = $('#name')。val()  ; 
 var address = $('#address')。val(); 
 $ .post('index.php?route = checkout / guest / receive',{name:name,address:address}); \  n   


然后在guest.php控制器文件中,我收到已发布的变量,并将它们存储在2中 变量名称和地址:

  public function receive(){
 $ name = $ this-&gt; request-&gt; post ['name']; 
 $  address = $ this-&gt; request-&gt; post ['address']; 

然后在guest.tpl文件中,我回应它们 :

echo $ name; 
echo $ address; 

当我加载访客页面时,我收到以下错误消息:注意:未定义的变量:C:\ xampp \ htdocs \ catalog \ view \中的名称 第13行的me \ default \ template \ checkout \ guest.tpl注意:未定义的变量:第14行的C:\ xampp \ htdocs \ catalog \ view \ theme \ default \ template \ checkout \ guest.tpl中的地址。

如果有人能告诉我如何使这段代码有效,我将非常感激。 据我所知,变量要么没有被发送到正确的位置,要么我没有在guest.php页面上正确访问它们。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doz22551 2012-12-17 09:45

    First of all - I do not understand why would You like to post some name and address from checkout/login page as there are no such fields at default, unless You have added them.

    Anyway in such a case I would proceed this way - post to a receive() method via AJAX as You do. Here I would save the variables into a session:

    public function receive() {
        $this->session->data['guest_name'] = $this->request->post['name'];
        $this->session->data['guest_address'] = $this->request->post['address'];

    Now in catalog/controller/checkout/guest.php at index method check for that session variables and if set, store the value in the $this->data array for presenting to the template:

    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'];

    After that You can simply echo these values in Your template (still checking whether exists):

    <?php if(isset($guest_name)) { ?>
    <div><?php echo $guest_name . ' - ' . $guest_address; ?></div>
    <?php } ?>

    Now You should be done while avoiding any undefined variable notices...

    解决 无用
    打赏 举报

相关推荐 更多相似问题