Я хотел бы установить переменную в сеансе, используя 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);