【问题标题】:Session not working in laravel 5.3会话在 laravel 5.3 中不起作用
【发布时间】:2021-06-08 15:07:42
【问题描述】:

我正在尝试创建如下代码的会话,但会话不工作,请向我提供任何解决方案。

保存

$data = array(
   "id" => $row->id,
   "name" => $row->name
);

Session($data);

获取

Session('id');

我也尝试了网络中间件,但直到同一会话不起作用

Route::group(['middleware' => ['web']], function ()
{

});

【问题讨论】:

  • 你在哪里尝试?在控制器或其他任何地方?
  • 我在模型类中保存和检索会话
  • 下面给出的任何答案对你有用吗?
  • 也分享你的模型。

标签: php laravel session session-variables laravel-5.3


【解决方案1】:

我最近解决了这个问题。

如果您尝试在会话中保存数组,或者如果您想将数据推送到会话中,请尝试以下操作。

解决方案:

首先到 Kernel.php 进入 "App\Http\Kernel.php" 并将这一行 \Illuminate\Session\Middleware\StartSession::class, 添加到 $middleware 数组中。这将开始存储数据。


对于会话数组

Session::push('cart', $product);


单值

用你想要的变量替换 session_key。

Session::put('session_key');

参考:https://www.scratchcode.io/session-not-working-in-laravel/

【讨论】:

  • 是的!将StartSession 中间件添加到 Kernel.php 中的“全局”中间件列表中为我解决了这个问题...
【解决方案2】:

您应该remove web middleware from routes 解决会话问题。

持久化数据的正确语法是:

session(['key' => $data]);

获取数据使用:

session('key');

【讨论】:

  • 我现在没有使用中间件,但问题相同。
  • 使用web 中间件肯定会中断会话,因此请检查您是否在其他地方手动添加了它。另外,运行php artisan route:clear命令清除路由缓存。
【解决方案3】:

如果可以按照以下步骤进行,会话将正常工作...

第一步:

在控制器中添加以下代码(其中 Session 将用于保存数据)

use Session;

第二步:

在该控制器的方法中,会话代码如下:

Session::put('name', 'Sabuz'); 
Session::put('data', $data); 

可以保存任何数据,但要确保 put 方法的第一个参数是 key,第二个是它的 value

第三步:

只要会话携带该数据,就可以使用以下命令从任何地方查看该数据

$name = Session::get('name'); //get method just use the key of a put method
echo $name;

希望它是可行的。

【讨论】:

    【解决方案4】:

    如果您想要持久会话,请使用 session()->save()Session::save()

    $data = array("id" => $row->id, "name" => $row->name);
    
    session($data);
    //or
    session()->put('key', 'value');
    
    session()->save();
    
    echo session('id');
    

    另外,“storage”目录应该有写权限。

    chmod -R a+rw storage/
    

    【讨论】:

      【解决方案5】:

      我的会话无法正常工作,因为我试图在控制器构造函数中放置和获取,而 Laravel 5.3 不支持直接在构造函数中放置和获取会话。如果您想在构造函数中放置和获取会话,则需要在构造函数中添加以下代码。

      function __construct()
      {
         $this->middleware(function ($request, $next)
         {
      
         });
      }
      

      【讨论】:

        【解决方案6】:

        保存数据

        session()->put('data' => $data);
        

        获取数据

        session()->get('data');
        

        【讨论】:

          【解决方案7】:

          像使用会话一样

          use Illuminate\Support\Facades\Session;
          

          设置会话:

           Session::flash('key', 'Value');
          

          查看文件:

          @if(Session::has('key'))
                  <div class="alert-success">
                      {{ Session::get('key') }}
                  </div>
          @endif
          

          参考:https://laravel.com/docs/5.3/facades#facade-class-reference https://laravel.com/api/5.3/Illuminate/Support/Facades/Session.html

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-02-12
            • 1970-01-01
            • 2014-09-14
            • 2018-01-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多