在 laravel 中设置会话变量
Set session variable in laravel
我想使用laravel这种方式在会话中设置一个变量
Session::set('variableName')=$value;
但问题是我不知道把这段代码放在哪里,因为我想设置一次(当客人访问主页或任何其他页面时)?
主要思想是使用全局变量在所有应用程序控制器中使用它,我听说过一些与配置变量相关的事情,但我不确定使用配置变量或仅使用会话是否是个好主意?
谢谢
正确的语法是:
Session::set('variableName', $value);
对于Laravel 5.4及之后的版本,正确的使用方法是put
:
Session::put('variableName', $value);
要获取变量,您可以使用:
Session::get('variableName');
如果您需要设置一次,我会弄清楚您想要设置的确切时间,然后使用 Events
来完成。
例如,如果你想在有人登录时设置它,你可以使用:
Event::listen('auth.login', function() {
Session::set('variableName', $value);
});
我想你的问题最终可以归结为:
Where can I set a long-lived value that is accessible globally in my application?
显而易见的答案是视情况而定。它取决于几个因素:
- 价值会有所不同,还是每个人都一样?
- 长寿到底是多长时间? (永远?一天?一次浏览 'session'?)
配置
如果每个人的值都相同并且很少更改,那么最好将它放在 app/config
下面的某个配置文件中,例如app/config/companyname.php
:
<?php
return [
'somevalue' => 10,
];
您可以通过 Config::get('companyname.somevalue')
从应用程序中的任何位置访问此值
会话
如果您打算为每个用户存储的值 不同 ,最合乎逻辑的地方是 Session
。这就是您在问题中提到的内容,但是您使用的语法不正确。在 Session 中存储变量的正确语法是:
Session::put('somekey', 'somevalue');
稍后检索它的正确语法是:
Session::get('somekey');
至于何时执行这些操作,这完全取决于您。如果使用 Laravel 5,我可能会选择 route filter if on Laravel 4.x or Middleware。下面是一个使用路由过滤器的示例,该过滤器利用另一个 class 实际得出值:
// 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')) {
//
}
要添加到上述答案中,请确保按如下方式定义函数:
public function functionName(Request $request) {
//
}
注意“(Request $request)”,现在像这样设置会话:
$request->session()->put('key', 'value');
并以这种方式检索会话:
$data = $request->session()->get('key');
要删除会话,试试这个:
$request->session()->forget('key');
或
$request->session()->flush();
在Laravel6.x
// Retrieve a piece of data from the session...
$value = session('key');
// Specifying a default value...
$value = session('key', 'default');
// Store a piece of data in the session...
session(['key' => 'value']);
要设置会话,您可以试试这个:
$request->session()->put('key','value');
也可以尝试获取会话数据:
$request->session()->get('key');
如果要获取所有会话数据:
$request->session()->all();
如果你想要持久性会话,
方法一:使用session()->save()
或Session::save()
session(['key' => 'value']);
//or
session()->put('key', 'value');
//then
session()->save();
echo session('key');
方法 2:将下面的行从 app\Http\Kernel.php
的 protected $middlewareGroups
移动到 protected $middleware
数组作为第一行
\Illuminate\Session\Middleware\StartSession::class,
确保存储目录有写权限
chmod -R a+rw storage/
不要使用dd()
验证会话,使用print_r()
我想使用laravel这种方式在会话中设置一个变量
Session::set('variableName')=$value;
但问题是我不知道把这段代码放在哪里,因为我想设置一次(当客人访问主页或任何其他页面时)? 主要思想是使用全局变量在所有应用程序控制器中使用它,我听说过一些与配置变量相关的事情,但我不确定使用配置变量或仅使用会话是否是个好主意? 谢谢
正确的语法是:
Session::set('variableName', $value);
对于Laravel 5.4及之后的版本,正确的使用方法是put
:
Session::put('variableName', $value);
要获取变量,您可以使用:
Session::get('variableName');
如果您需要设置一次,我会弄清楚您想要设置的确切时间,然后使用 Events
来完成。
例如,如果你想在有人登录时设置它,你可以使用:
Event::listen('auth.login', function() {
Session::set('variableName', $value);
});
我想你的问题最终可以归结为:
Where can I set a long-lived value that is accessible globally in my application?
显而易见的答案是视情况而定。它取决于几个因素:
- 价值会有所不同,还是每个人都一样?
- 长寿到底是多长时间? (永远?一天?一次浏览 'session'?)
配置
如果每个人的值都相同并且很少更改,那么最好将它放在 app/config
下面的某个配置文件中,例如app/config/companyname.php
:
<?php
return [
'somevalue' => 10,
];
您可以通过 Config::get('companyname.somevalue')
会话
如果您打算为每个用户存储的值 不同 ,最合乎逻辑的地方是 Session
。这就是您在问题中提到的内容,但是您使用的语法不正确。在 Session 中存储变量的正确语法是:
Session::put('somekey', 'somevalue');
稍后检索它的正确语法是:
Session::get('somekey');
至于何时执行这些操作,这完全取决于您。如果使用 Laravel 5,我可能会选择 route filter if on Laravel 4.x or Middleware。下面是一个使用路由过滤器的示例,该过滤器利用另一个 class 实际得出值:
// 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')) {
//
}
要添加到上述答案中,请确保按如下方式定义函数:
public function functionName(Request $request) {
//
}
注意“(Request $request)”,现在像这样设置会话:
$request->session()->put('key', 'value');
并以这种方式检索会话:
$data = $request->session()->get('key');
要删除会话,试试这个:
$request->session()->forget('key');
或
$request->session()->flush();
在Laravel6.x
// Retrieve a piece of data from the session...
$value = session('key');
// Specifying a default value...
$value = session('key', 'default');
// Store a piece of data in the session...
session(['key' => 'value']);
要设置会话,您可以试试这个:
$request->session()->put('key','value');
也可以尝试获取会话数据:
$request->session()->get('key');
如果要获取所有会话数据:
$request->session()->all();
如果你想要持久性会话,
方法一:使用session()->save()
或Session::save()
session(['key' => 'value']);
//or
session()->put('key', 'value');
//then
session()->save();
echo session('key');
方法 2:将下面的行从 app\Http\Kernel.php
的 protected $middlewareGroups
移动到 protected $middleware
数组作为第一行
\Illuminate\Session\Middleware\StartSession::class,
确保存储目录有写权限
chmod -R a+rw storage/
不要使用dd()
验证会话,使用print_r()