Установить переменную сеанса в laravel

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

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

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

6 ответов


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

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

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

Session::get('variableName');

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

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

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

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

очевидный ответ заключается в том, что это зависит. То, что это зависит от нескольких факторов:

  • будет ли значение когда-либо отличаться, или оно будет одинаковым для всех?
  • как долго долго жили? (Вечно? День? Один просмотр "сеанс"?)

Config

если значение одинаково для всех и редко меняется, лучшее место, вероятно, поместить его в файл конфигурации где-то под 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 или промежуточное ПО при использовании 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'))
   ;
});

в Laravel 5.4

использовать этот метод:

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

в Laravel 5.6 вам нужно будет установить его как

  session(['variableName'=>$value]);

извлекать его так же просто, как

$variableName = session('variableName')

вы можете попробовать

 Session::put('variable_Name', "Your Data Save Successfully !");  
 Session::get('variable_Name');

например, для хранения данных в сеансе обычно используется putспособ или session помощник:

// Via a request instance...
$request->session()->put('key', 'value');

или

// Via the global helper...
session(['key' => 'value']);

для извлечения элемента из сессии, вы можете использовать get :

$value = $request->session()->get('key', 'default value');

или глобальной session помощник :

$value = session('key', 'default value');

чтобы определить, присутствует ли элемент в сеансе, вы можете использовать has способ:

if ($request->session()->has('users')) {
//
}