form_open в codeigniter - PullRequest
       1

form_open в codeigniter

0 голосов
/ 27 февраля 2012

У меня есть URL, который выглядит так:

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

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

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

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

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

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

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

1 Ответ

7 голосов
/ 27 февраля 2012

Перенаправление на страницу реферера одним из двух подходов:

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'));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...