2012-02-26 3 views
0

У меня есть URL, который выглядит следующим образом:Form_Open в CodeIgniter

http://localhost/store/mens/category/t-shirts/item/a-t-shirt

У меня есть класс, называемый магазином и в этот момент в моем приложении функция пункта была названа и некоторыми данными о продукте, имеет выводится на страницу.

Мне нужно разрешить пользователю добавлять товар в корзину. Я знаю, что CI предоставляет библиотеку, чтобы помочь с этим, и я создал простой класс, который будет взаимодействовать с этой библиотекой, чтобы создать функциональность корзины покупок. Проблема в том, что я не понимаю, как я должен получить форму для отправки в мой класс корзины покупок, а затем вернуться к текущему URL-адресу со всеми неизменными параметрами, как указано выше. Использование:

<?= form_open('cart/addItem',array('class' => 'basketForm')); ?> 

подает в соответствующий класс, но тогда у меня нет никакого механизма, чтобы вернуться к странице продукта после этого.

Единственный способ, которым я могу это сделать, - отправить URL-адрес вместе с классом тележки и перенаправить после того, как материал корзины будет выполнен .... или использовать AJAX ... но оба выглядят как хаки, чтобы получить эту работу ,

Есть ли чистый способ сделать это?

+0

Вы можете сделать с помощью AJAX, то будет более чистый подход – insomiac

+0

В целом я думаю, что использование AJAX для добавления продукта в корзину - самый приятный и удобный для пользователя подход. – joakimdahlstrom

+1

AJAX - плюс, но он должен работать без него. Начните со стандартных HTTP-операций, затем сделайте это * более удобным для пользователя * с AJAX. – landons

ответ

6

Перенаправление на страницу ссылающейся с одним из двух подходов:

1. Только в контроллере:

<?php 
class Cart extends CI_Controller { 
    public function addItem() 
    { 
     // ... add to cart here 
     redirect($_SERVER['HTTP_REFERER']); 
    } 
} 

2. С точки зрения, скажите контроллер, где вы хотите его пойти после того, как:

<!-- Form view //--> 
<?= form_open('cart/addItem',array('class' => 'basketForm')); ?> 
<?= form_hidden('next_URI', current_url()); // requires URL_helper ?> 
... 
<?= form_submit('', 'Add to Cart'); ?> 
<?= form_close(); ?> 


<?php 
// Controller 
class Cart extends CI_Controller { 
    public function addItem() 
    { 
     // ... add to cart here 
     redirect($this->input->post('next_URI')); 
    } 
} 
+0

Спасибо. Я думал, что это будет подход, который мне нужно будет использовать, но хотел бы убедиться, что лучшего способа добиться этого не было. –

Смежные вопросы