【问题标题】:Laravel 5.2 upgrade to 5.3 flash message errorLaravel 5.2 升级到 5.3 闪信息报错
【发布时间】:2017-01-05 18:01:46
【问题描述】:

从 Laravel 5.2 升级到 5.3 后,我无法添加 Flash 消息。

这是我们使用的代码:

return redirect()->back()->with('alert-success', 'My Message');

用于显示消息:

@foreach (['danger', 'warning', 'success', 'info'] as $msg)
    @if(Session::has('alert-' . $msg))
        <div class="alert alert-{{ $msg }} alert-dismissible">
            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
            {{ Session::get('alert-' . $msg) }}
        </div>
    @endif
@endforeach

如果我们提供错误的凭据,我们也无法使用登录消息:

<form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}">
    {{ csrf_field() }}
    <div class="form-group has-feedback {{ $errors->has('email') ? ' has-error' : '' }}">
        <input type="email" name="email" class="form-control" placeholder="Email" value="{{ old('email') }}">
        <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
        @if ($errors->has('email'))
            <span class="help-block">
                <strong>{{ $errors->first('email') }}</strong>
            </span>
        @endif
    </div>
    <div class="form-group has-feedback {{ $errors->has('password') ? ' has-error' : '' }}">
        <input type="password" name="password" class="form-control" placeholder="Password">
        <span class="glyphicon glyphicon-lock form-control-feedback"></span>
        @if ($errors->has('password'))
            <span class="help-block">
                <strong>{{ $errors->first('password') }}</strong>
            </span>
        @endif
    </div>
    <div class="row">
        <!-- /.col -->
        <div class="col-xs-12">
            <button type="submit" class="btn btn-primary btn-block btn-flat">
                Login
            </button>
        </div>
    </div>
</form>

【问题讨论】:

    标签: laravel laravel-5.3


    【解决方案1】:

    如果您使用 5.2.27 或更低版本并移至 5.3,那么您肯定在路由文件中使用了 web 中间件。您需要 move web middleware from Laravel 5.3 routes to make sessions work,因为从 5.2.27 开始,如果您尝试手动将其添加到 web.php,它会中断与会话相关的功能。

    【讨论】:

    • 不要将web 中间件返回给web.php,将其移除。尝试clear all Laravel cache。另外,请检查app\Http\Kernel.php。在 5.3 和最新的 5.2.x 中是不同的。 Here's 5.3 中的样子。
    【解决方案2】:

    该解决方案可以在Kernel.php 中进行编辑。

    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    ];
    

    当我添加 StartSessionShareErrorsFromSession 时,它就像旧网站一样工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-31
      • 2017-02-04
      • 2018-10-18
      • 2019-02-14
      • 2012-07-23
      • 2020-08-26
      • 2017-02-24
      • 1970-01-01
      相关资源
      最近更新 更多