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:
<?php
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.
First of all – I do not understand why would You like to post some
nameandaddressfromcheckout/loginpage 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:Now in
catalog/controller/checkout/guest.phpatindexmethod check for that session variables and if set, store the value in the$this->dataarray for presenting to the template:After that You can simply echo these values in Your template (still checking whether exists):
Now You should be done while avoiding any
undefined variablenotices…