Установка переменной сеанса в laravel

Я хотел бы установить переменную в сеансе, используя laravel таким образом

Session::set('variableName')=$value; 

но проблема в том, что я не знаю, где разместить этот код, потому что я хотел бы установить его на один раз (когда гость просматривает домашнюю страницу или любую другую страницу)? Основная идея состоит в том, чтобы использовать глобальную переменную для ее использования во всех контроллерах приложений, я слышал о чем-то, связанном с переменными конфигурации, но я не уверен, будет ли хорошая идея использовать конфигурационные переменные или только сеанс? благодаря

Правильный синтаксис для этого …

 Session::set('variableName', $value); 

Чтобы получить переменную, вы должны использовать …

 Session::get('variableName'); 

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

 Event::listen('auth.login', function() { Session::set('variableName', $value); }); 

Я думаю, что ваш вопрос в конечном итоге можно свести к следующему:

Где можно установить долговременное значение, доступное по всему миру в моем приложении?

Очевидным ответом является то, что это зависит. От этого зависит несколько факторов:

  • Будет ли ценность когда-либо отличаться, или она будет одинаковой для всех?
  • Как долго длится долго? (Навсегда? Один день? Один сеанс просмотра?)

конфиг

Если значение будет одинаковым для всех и редко будет изменяться, лучшее место, возможно, будет указано в файле конфигурации где-то под app/config , например app/config/companyname.php :

 <?php return [ 'somevalue' => 10, ]; 

Вы можете получить доступ к этому значению из любого места в своем приложении через Config::get('companyname.somevalue')

сессия

Если значение, которое вы собираетесь хранить, будет отличаться для каждого пользователя, наиболее логичным местом его размещения является Session . Это то, о чем вы говорите в своем вопросе, но используете неправильный синтаксис. Правильный синтаксис для хранения переменной в сеансе:

 Session::put('somekey', 'somevalue'); 

Правильный синтаксис для его последующего возврата:

 Session::get('somekey'); 

Что касается того, когда выполнять эти операции, это немного зависит от вас. Я бы выбрал фильтр маршрутов, если на Laravel 4.x или Middleware, если вы используете Laravel 5. Ниже приведен пример использования фильтра маршрута, который использует другой класс, чтобы на самом деле придумать значение:

 // File: ValueMaker.php (saved in some folder that can be autoloaded) class ValueMaker { public function makeValue() { return 42; } } // File: app/filters.php is probably the best place Route::filter('set_value', function() { $valueMaker = app()->make('ValueMaker'); Session::put('somevalue', $valueMaker->makeValue()); }); // File: app/routes.php Route::group(['before' => 'set_value'], function() { // Value has already been 'made' by this point. return View::make('view') ->with('value', Session::get('somevalue')) ; }); 

в Ларавеле 5.4

используйте этот метод:

 Session::put('variableName', $value);