会话在Laravel 4中不起作用

Vuk*_*vić 5 php session laravel-4

我遇到了Session不会持续存在的问题.

在控制器中,我有一个加载文章进行编辑的功能

public function getEdit($id)
{
    try {
        $news = News::findOrFail($id);
        View::share('title', Lang::get('admin.editNews').": ".$news->title);
        View::share('news', $news);
        $this->layout->content = View::make('news.editNews');
    } catch (Exception $e) {
        Session::flash('message', Lang::get('admin.noSuchNews'));
        Session::flash('notif', 'danger');
        return Redirect::to("news");
    }
}
Run Code Online (Sandbox Code Playgroud)

我还有另一个函数 - 索引,它应该显示这些flash消息.

public function getIndex()
{
    var_dump(Session::get('message'));
}
Run Code Online (Sandbox Code Playgroud)

会话不是持久的.不合作Session::flash,不合作Session::put.

Session::get('message')永远都是null.

我想我应该提一下,我做了这样的应用程序路由:

Route::controller('news', 'NewsController');
Run Code Online (Sandbox Code Playgroud)

Lio*_*son 5

检查控制器中Session的功能设置的返回状态.确保它返回一些东西,即使它是一个简单的null.

我刚刚遇到了同样的问题,这解决了它.我能够使用以下内容:

Route::get('session', function (){
    Session::put('current_user', 'Lionel Morrison');
    Session::put('user_id', '12345');

    var_dump(Session::all());
});

Route::get('get', function () {
    var_dump(Session::all());
});
Run Code Online (Sandbox Code Playgroud)

但是当我在一个控制器中使用它时,它在我返回null之前不起作用;

public function setsession() {
    Session::put('cat', 'Tom');
    Session::put('mouse', 'Jerry');

    return null;
}

public function getsession() {
    dd(Session::all());
}
Run Code Online (Sandbox Code Playgroud)


Vuk*_*vić 4

好的,我已经解决了这个问题。

事情是,我已经把session.php这个归档了

'domain' => '.mydomain.com',
Run Code Online (Sandbox Code Playgroud)

但由于应用程序仍在本地主机中,因此即使我没有使用cookie会话驱动程序,所有会话都失败了。

当我将其更改为

'domain' => '',
Run Code Online (Sandbox Code Playgroud)

一切开始运转