【问题标题】:No session variables show up in view - Laravel 5.1视图中没有显示会话变量 - Laravel 5.1
【发布时间】:2016-08-11 22:51:25
【问题描述】:

我正在尝试使用 Laravel 5.1 中的 Session::flash() 方法在我的登录页面上显示错误。

在我看来,我正在使用:

@if($errors->has())
    <div class="alert alert-danger">
        @foreach ($errors->all() as $error)
            <div>{{ $error }}</div>
        @endforeach
    </div>
@endif

在我的控制器中:

return Redirect::route('login')-&gt;withErrors($validator)-&gt;withInput();

  1. 当错误重定向到此页面时,我没有从 Input::old() 方法获得任何信息。

  2. $errors 变量在重新加载时为空。

如果我在return Redirect::route... 之前dd($validator);,则$validator 中有数据:

但是当页面加载时,什么都没有发生。

我可以尝试Session::put,但在获取视图时仍然没有任何反应。

可能出了什么问题? composerphp artisan 中是否有可以解决此问题的内容?

【问题讨论】:

    标签: php session view laravel-5.1


    【解决方案1】:

    对于遇到此问题的任何人,我的解决方法是将 .env 文件从 SESSION_DRIVER=array 更改为 SESSION_DRIVER=file

    【讨论】:

      【解决方案2】:

      composerphp artisanSession 无关。

      您没有看到 Session::flash 消息是因为您没有检索它。

      要从Session::flash 检索消息,您需要使用以下命令:

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

      $errors 上查看您的代码,尝试用此替换@if

      @if (count($errors) > 0)
          <div class="alert alert-danger">
              <ul>
                  @foreach ($errors->all() as $error)
                      <li>{{ $error }}</li>
                  @endforeach
              </ul>
          </div>
      @endif
      

      Laravel's official documentation 在显示验证错误消息时,仅显示上述代码。

      【讨论】:

        猜你喜欢
        • 2021-10-09
        • 1970-01-01
        • 2016-09-27
        • 2015-07-05
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        • 1970-01-01
        • 2015-05-27
        相关资源
        最近更新 更多