У меня есть веб-сайт, на котором первая страница содержит форму поиска с несколькими полями.Laravel store session in cookie
Когда пользователь выполняет поиск, я делаю вызов ajax функции в контроллере.
В основном, когда пользователь нажимает на кнопку отправки, я посылаю вызов AJAX через почту на:
Route::post('/search', '[email protected]');
Тогда в SearchController
классе, в функции general
, хранить значения, полученные в переменная сеанса, который является объектом:
Session::get("search")->language = Input::get("language");
Session::get("search")->category = Input::get("category");
//I'm using examples, not the real variables names
после обновления переменной сеанса, на самом деле, сразу после того, было показано выше фрагмент кода, создать (или переопределить) печенье хранения значений сеанса:
Cookie::queue("mysite_search", json_encode(Session::get("search")));
И после этой операции я выполнить поисковый запрос и отправить результаты и т.д.
Все, что отлично работает, но я не получаю обратно значения в куки. Позвольте мне объяснить.
Как только на первой странице моего сайта открыт, я выполнить действие, как это:
if (!Session::has("search")) {
//check for a cookie
$search = Cookie::get('mysite_search');
if($search) Session::put("search", json_decode($search));
else {
$search = new stdClass();
$search->language = "any";
$search->category = "any";
Session::put("search", $search);
}
}
Это, кажется, всегда неудачу if($search)
всегда возвращается false
, и в результате, моя переменная сеанса search
всегда имеет свои свойства language
и category
, заселенное значением any
. (Опять же: я использую примеры, а не имена реальных переменных).
Итак, я хотел бы знать, что здесь происходит и как я могу достичь того, что я собираюсь сделать.
Я пытался поставить Session::put("search", json_decode($search));
сразу после $search = Cookie::get('mysite_search');
извлекая все if else
блок, и выдает ошибку (Ajax вызов возвращает ошибку), так что вся вещь failling в какой-то момент, при сохранении объекта в куки или когда сбрасывая его.
Или может быть что-то еще. Я не знаю. Вот почему я здесь. Спасибо, что прочитал такой длинный вопрос.
Вы используете функцию getter session, это для получения данных сеанса, а не для установки. В Laravel 4 используется синтаксис 'Session :: put ('key', 'value');' синтаксис для установки переменных сеанса. – Joe
@ Joe Я не понимаю, что вы говорите. Я помещаю сессию: '' Session :: put («поиск», json_decode ($ search)); '. Позже я переопределяю некоторые свойства сеанса, такие как: '' Session :: get ("search") -> language = Input :: get ("language"); '', который отлично работает (переменная сеанса получает эту специфическую имущество переоценивается). Проблема заключается в json_encode и json_decode. Все остальное отлично работает. – user2755140
Цитата: «Я попытался поставить Session :: put (« поиск », json_decode ($ search)), сразу после $ search = Cookie :: get ('mysite_search'), удалив весь блок if else, и который выдает error (вызов ajax возвращает ошибку), поэтому все это происходит в какой-то момент, при хранении объекта в файле cookie или при его восстановлении ». – user2755140