Laravel:会话未保存

Laravel: Sessions not saving

所以我通读了所有 Laravel 会话信息和所有关于 Laravel 会话的 Whosebug 问题,但它没有任何帮助。

我试图在登录时存储用户名,并且我希望它显示我在页面上登录的整个时间。现在,当我登录时,我进入主页并显示用户名,然后我返回登录,这将我重定向到主页,用户名不再存在。我使用的代码:

Session::put('username', Input::get('username'));
$value = Session::get('username');
return View::make('main')->with('username',$value);

然后在我的 main.blade.php:

@if(!empty($username))
     {{$username}}
@endif

我不知道我做错了什么。我做的和所有的例子一模一样。 我在这里做错了什么?

如果您还没有这样做,您应该利用 Laravels Auth。然后你不必自己处理这些东西,只需这样做即可检索用户名:

Auth::user()->username;

编辑

这里的实际问题不是您的会话,而是您仅将 $username 传递给您的一个控制器中的视图这一事实,而不是在您呈现它时一直如此。

如果你想要当前用户的一些 属性,一定要使用 Auth::user()->username。如果您有其他会话值,您可以使用以下方式直接在视图中访问它们:

{{ Session::get('foo'); }}

另一种方法是视图编辑器。他们让您在每次渲染时将内容传递给视图:

View::composer('main', function($view){
    $view->with('foo', Session::get('foo'));
});

您可以将此代码放在 app/filters.php 中或创建一个新的 app/composers.php 并将其包含在 app/start/global 的末尾。 php 与:

require app_path().'/composers.php';

现在变量在 main.blade.php 中始终可用,只需:

{{ $username }}