У меня действительно странное поведение класса корзины CodeIgniter. Я установил таблицу ci_session в моей базе данных и уже изменил sess_use_database на TRUE.
Что происходит, так это то, что когда я добавляю элементы в корзину для покупок, все в порядке: я вижу, что общий счетчик предметов растет и все. Когда я перехожу на страницу моей корзины, я впервые вижу все мои предметы там, где они должны быть. Я также предоставил кнопку «Удалить элемент» и кнопку «Пустая корзина». Странные вещи происходят здесь: когда я нажимаю, чтобы удалить элемент, страница обновляется (из-за перенаправления, я думаю), но элемент все еще там! Затем, если я вручную обновляю страницу корзины, я вижу, что тот же самый элемент, который я удалил, исчез. Это похоже на то, что когда я использую перенаправление, я получаю кеш страницы, а не фактическую страницу со свежей информацией об этом.
В любом случае, вот некоторые ссылки:
Попробуйте добавить некоторые элементы с этой страницы: http://www.pantanishoes.it/Niko/index.php/store/linea/urban. Нажав на большую темную кнопку внизу описания каждого элемента.
Затем попробуйте пойти в Каррелло в меню сверху и попытаться удалить некоторые предметы или Svuota (что делает простой destroy ()) и посмотреть, что произойдет! Любая помощь будет принята с благодарностью! Спасибо, совет!
Вот какой код в Корзине.
function add() { $item = $this->store_model->get_item($this->input->post('id')); $data = array( 'id' => $this->input->post('id'), 'name' => $item->modello, 'qty' => $this->input->post('qty'), 'price' => $item->prezzo, 'options' => array( 'taglia' => $this->input->post('taglia'), 'linea' => $item->linea, 'modello' => $item->modello, 'foto' => $item->foto1 ) ); $this->cart->insert($data); $linea = str_replace(' ', '-', $item->linea); redirect('/store/linea/' . $linea . '/', 'location'); } function remove() { $rowid = $this->uri->segment(3); $data = array( 'rowid' => $rowid, 'qty' => 0 ); $this->cart->update($data); redirect('cart'); } function destroy() { $this->cart->destroy(); redirect('cart'); }
На локальном хосте все отлично работало! Когда я загрузил веб-сайт на сервер, у него возникли такие проблемы. Действительно действительно странно! Есть ли какая-то конфигурация, которую я пропускаю?
Chrome говорит: URL-адрес запроса: http://www.pantanishoes.it/Niko/index.php/cart/remove/fb1b4a9869de6f24aa620e2307192d93 Метод запроса: Код состояния GET: 302 Временно перемещен (из кеша)
Хорошо, парни. Поэтому я, наконец, исправил эту небольшую ошибку благодаря помощи моего друга, который некоторое время использовал CI. Как некоторые из вас догадались, это проблема с кешем. Единственное, что вам нужно сделать, это заставить PHP-заголовки так:
header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); header( 'Last-Modified: ' . gmdate( 'D, d MYH:i:s' ) . ' GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); header( 'Cache-Control: post-check=0, pre-check=0', false ); header( 'Pragma: no-cache' );
Вы можете сделать частную функцию в своем контроллере, чтобы она не была доступна извне и вызывала ее в ваших методах относительного добавления, удаления и уничтожения. Частная функция должна выглядеть примерно так:
private function _set_headers() { header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); header( 'Last-Modified: ' . gmdate( 'D, d MYH:i(worry)' ) . ' GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); header( 'Cache-Control: post-check=0, pre-check=0', false ); header( 'Pragma: no-cache' ); }
И вы называете это внутри других функций:
$this->_set_headers();
Помните, что это будет работать только в рамках класса. Вы не можете вызвать эту функцию в других контроллерах, и ее невозможно получить из-за пределов области действия, так как она не является общедоступной.
Спасибо вам всем!
я бы посоветовал вам попробовать следующее:
redirect('/store/linea/' . $linea . '/', 'refresh');
вместо
redirect('/store/linea/' . $linea . '/', 'location');
кажется, ваша страница остается кешированной после перенаправления
Spero che funzioni