代码之家  ›  专栏  ›  技术社区  ›  user3429578

在laravel中设置会话变量

  •  44
  • user3429578  · 技术社区  · 11 年前

    我想通过这种方式使用laravel在会话中设置一个变量

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

    但问题是我不知道该把代码放在哪里,因为我想设置一次(当客人访问主页或任何其他页面时)? 主要想法是使用全局变量在所有应用程序控制器中使用它,我听说了一些与配置变量相关的事情,但我不确定使用配置变量还是仅使用会话是一个好主意? 谢谢

    10 回复  |  直到 11 年前
        1
  •  109
  •   matiaslauriti    4 年前

    正确的语法是:

    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);
    });
    
        2
  •  28
  •   Jeff Lambert    11 年前

    我认为你的问题最终可以归结为:

    在哪里可以设置应用程序中全局可访问的长期值?

    显而易见的答案是,这取决于情况。它取决于几个因素:

    • 价值是否会有所不同,或者对每个人来说都是一样的?
    • 到底长寿多长时间?(永远?一天?一次浏览“会话”?)

    配置

    如果每个人的值都相同,并且很少改变,那么最好将其放在下面的配置文件中 app/config ,例如。 app/config/companyname.php :

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

    您可以通过 Config::get('companyname.somevalue')

    一场

    如果您要存储的值 不同的 对于每个用户来说,最合理的放置位置是 Session 。这是你在问题中提到的,但你使用的语法不正确。在会话中存储变量的正确语法是:

    Session::put('somekey', 'somevalue');
    

    稍后检索它的正确语法是:

    Session::get('somekey');
    

    远至 什么时候 要执行这些操作,这有点取决于您。我可能会选择 route filter 如果在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
  •  12
  •   matiaslauriti    4 年前

    在Laravel 5.6中,您需要将其设置为:

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

    要检索它,简单如下:

    $variableName = session('variableName');
    
        4
  •  8
  •   Alihossein shahabi    7 年前

    例如,要在会话中存储数据,通常将使用 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');
    

    或全局 一场 帮手:

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

    要确定会话中是否存在项目,可以使用 has 方法:

    if ($request->session()->has('users')) {
    //
    }
    
        5
  •  6
  •   Grandong    9 年前

    在Laravel 5.4中

    使用此方法:

    Session::put('variableName', $value);
    
        6
  •  5
  •   Multty    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();
    
        7
  •  4
  •   Dave informer    7 年前

    你可以试试

     Session::put('variable_Name', "Your Data Save Successfully !");  
     Session::get('variable_Name');
    
        8
  •  3
  •   David Figueroa    6 年前

    在Laravel 6.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']);
    

    https://laravel.com/docs/6.x/session

        9
  •  1
  •   namal    5 年前

    如果您想要持久会话,

    方法1:使用 session()->save() Session::save()

    session(['key' => 'value']);
    //or
    session()->put('key', 'value');
    
    //then
    session()->save();
    
    echo session('key');
    

    方法2:将波纹管线从 protected $middlewareGroups 属于 app\Http\Kernel.php protected $middleware 数组作为第一行

    \Illuminate\Session\Middleware\StartSession::class,
    

    确保存储目录具有写入权限

    chmod -R a+rw storage/
    

    不要使用 dd() 要验证会话,请使用 print_r()

        10
  •  0
  •   kayhanozturk    6 年前

    要设置会话,可以尝试以下操作:

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

    也可以尝试以下方法获取会话数据:

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

    如果要获取所有会话数据:

    $request->session()->all();
    
    推荐文章