У меня возникли проблемы с отправкой переменных в opencart. То, что я пытаюсь сделать, – захватить две переменные из текстовых полей на странице checkout / login, называемой именем и адресом. Я хочу, чтобы значения, введенные в эти два поля, были сохранены при нажатии кнопки продолжения, а затем отправлены на страницу checkout / guest, где я хочу выделить эти переменные. Вот что я сделал:
Вот мой файл checkout.tpl, где я пытаюсь отправить имя и адресные переменные на страницу checkout / guest, а именно метод получения:
$('#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 я получаю опубликованные переменные и сохраняю их в двух переменных, называемых именем и адресом:
public function receive() { $name = $this->request->post['name']; $address = $this->request->post['address']; }
Затем в файле guest.tpl я повторяю их:
<?php echo $name; echo $address; ?>
Когда я загружаю гостевую страницу, появляется следующее сообщение об ошибке: Примечание: Неопределенная переменная: имя в C: \ xampp \ htdocs \ catalog \ view \ theme \ default \ template \ checkout \ guest.tpl в строке 13 Примечание: Неопределенная переменная : адрес в C: \ xampp \ htdocs \ catalog \ view \ theme \ default \ template \ checkout \ guest.tpl в строке 14.
Если кто-нибудь скажет мне, как заставить этот код работать, я был бы очень благодарен. Из того, что я могу сказать, переменные либо не отправляются в нужное место, либо я не получаю их правильно на странице guest.php.
Прежде всего – я не понимаю, почему вы хотели бы опубликовать какое-либо name
и address
странице checkout/login
поскольку таких полей по умолчанию нет, если вы их не добавили.
Во всяком случае, в таком случае я бы продолжил так: отправьте метод receive()
через AJAX, как и вы. Здесь я бы сохранил переменные в сеансе:
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']; }
После этого вы можете просто отбросить эти значения в своем шаблоне (все еще проверяя, существует ли):
<?php if(isset($guest_name)) { ?> <div><?php echo $guest_name . ' - ' . $guest_address; ?></div> <?php } ?>
Теперь вы должны быть сделаны, избегая любых undefined variable
уведомлений undefined variable
…