2016-11-18 3 views
2

Я пытаюсь установить переменную cookie в функции construct, но ее настройка хешированной переменной, как показано ниже, когда я делаю Cookie::get('cookie_name'); в конструкции.Невозможно получить файл cookie в функции построения

eyJpdiI6ImRnRWF3TEa82Wm9cL3lRbng0OW1Wc1FBPT0iLCJ2YWx1ZSI6IlI4TkgwZGd6Mn 

Ниже приведен код, который я пытаюсь.

class CookieController extends Controller 
{ 
    public $cookie; 
    public function __construct(Request $request){ 
     $this->cookie = Cookie::get('cookie_name'); 
    } 

    public function viewCookie(Request $request){ 
    return $this->cookie; 
    } 

Если я называю Cookie::get('cookie_name'); внутри функции viewCookie, то его показывает правильное значение. Класс Cookie отключен в функции построения?

+0

- это сеанс, начатый до того, как конструкция вызвана ? – atoms

ответ

1

Я думаю, что это связано с изменением 5.3 для using sessions in controller constructor. Вот объяснение от Taylor Otwell:

Это очень плохо использовать сессию или авторизацию в конструкторе, как нет запроса еще произошло и сессии и аутентификации неотъемлемо связаны с запросом HTTP. Вы должны получить этот запрос в реальном методе контроллера, который вы можете вызывать несколько раз с несколькими разными запросами. Заставляя ваш контроллер разрешать сеансовую или аутентификационную информацию в конструкторе, вы теперь вынуждаете весь контроллер игнорировать фактический входящий запрос, который может вызвать значительные проблемы при тестировании и т. Д.

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