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

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

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

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

14

Решение

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

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

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

Session::get('variableName');

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

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

Другие решения

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

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

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

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

конфиг

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

в Laravel 5.4

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

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

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

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

Чтобы восстановить это так же просто, как

$variableName = session('variableName')
3

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

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

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

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

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

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

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

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

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

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

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

или же

$request->session()->flush();
0
По вопросам рекламы [email protected]