Laravel闪存或会话消息未到期[未维护更新]

时间:2017-01-17 06:57:31

标签: php laravel session laravel-5.3 flash-message

经过一些研究后更新
经过一些研究后我得出结论,在我明确保存之前,我的会话不会被维护,下面的代码运行良好,但为什么???? Ref here

Session::put('lets_test', 2);
Session::save();

旧问题
我是laravel 5.3的新手,并且遇到了问题。每次重新加载页面时,我的Laravel会话或Flash消息都不会过期,直到我使用Session::flush()以下是我的控制器代码

<?php

namespace App\Http\Controllers;


use Session;
use Auth;
use Illuminate\Http\Request;
use App\User;
use App\Hospital;
use App\Wpr;
use Helper;

class OperatorController extends Controller
{
    public $user_detail;

    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('operator');
    }
    public function store (Request $request){ //Form is being submitted here
        //My logic here
        Session::flash('user_message', 'Thank You');
        return redirect('/operator/wpr');
    }
}

我还使用了Session::set('user_message', 4); 和刀片视图

@if(Session::has('user_message'))
    <div class="message  animated tada">
        {{ Session::get('user_message') }}
    </div>
@endif

我试过Session::forget('user_message')但没有运气。 经过一些研究后更新我的帖子。我reading this post on stack有点接近我的问题,因为这个问题与我的问题完全相同,但不幸的是它仍然存在,我已经将会话存储从文件更改为数据库(如果文件权限存储目录) 。可能还有什么其他可能性?

请提前帮助,谢谢。

3 个答案:

答案 0 :(得分:1)

最终,不知何故,我设法为我的问题找到解决方案,而不是维持会话。我不认为它与文件许可有关的任何问题。现在我明确地保存会话并明确删除它。 做了Helper类增加了两种方法

public static function SetMessage($message, $type){ 
   Session::put('user_message', $message);
   Session::put('user_message_type', $type);
   Session::save();
}
public static function ForgetMessage(){ 
   Session::forget('user_message');
   Session::forget('user_message_type');
   Session::save();
}

并在Controller类

 Helper::SetMessage('Record updated successfully', 'success');

并在刀片视图中tempalte

@if(Session::has('user_message'))
    <div class="alert alert-{{ Session::get('user_message_type') }}">
     {{ Session::get('user_message') }}
     {{ Helper::ForgetMessage('user_message') }}
    </div>
@endif

我希望这可以帮助那些面临这种问题的人。 但为什么会如此,仍然未知,也许有一天我也会发布原因。如果能以更好的方式做到这一点,欢迎提出更多建议。

答案 1 :(得分:0)

试试这个:

if(isset($_SESSION['user_message'])) {
        $message = $_SESSION['user_message'];
        unset($_SESSION['user_message']);
        return $message;
    }

答案 2 :(得分:0)

在您的(Laravel)刀片中,在if循环结束时添加$request->session()->forget('key');Session::forget('key');,这将结束或删除该密钥的会话。这可以帮助您更多地参考laravel 5.3的会话访问laravel 5.3