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

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

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

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

Ответ 1

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

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

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

Session::get('variableName');

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

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

Ответ 2

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

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

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

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

Config

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

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

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

Session

Если значение, которое вы собираетесь хранить, будет отличаться для каждого пользователя, наиболее логичным местом для его размещения является 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'))
   ;
});

Ответ 3

в Laravel 5.4

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

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

Ответ 4

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

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

Получить его так же просто, как

$variableName = session('variableName')

Ответ 5

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

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

Ответ 6

Например, чтобы сохранить данные в сеансе, вы обычно будете использовать метод 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')) {
//
}

Ответ 7

Чтобы добавить к ответам выше, убедитесь, что вы определили свою функцию следующим образом:

public function functionName(Request $request)  {
       //
}

Обратите внимание на "(Request $ request)", теперь установите сессию так:

$request->session()->put('key', 'value');

И получить сессию следующим образом:

$data = $request->session()->get('key');

Чтобы стереть сессию попробуйте это:

$request->session()->forget('key');  

или же

$request->session()->flush();

Ответ 8

В чем разница?

Session::set
Session::put

или же

session(['key' => 'value']);