Laravel 7无法显示闪存消息

3
Laravel Framework 7.25.0
PHP 7.2 on LARAGON

我不确定它是否与此有关,但我认为这可能与我的路由有关,我可能在说胡话。

没有显示任何闪现消息,我只能通过将其设置为Session :: put,检索视图中的消息,然后删除它来显示消息。

Session::put('success', 'example');
return redirect()->route('example', array('id_example' => 'example'));

当我在前台使用with、withErrors、flash时,总是返回null。
return redirect()->route('example', array('id_example' => 'example'))->with('success', 'Text');
or
return redirect()->back()->withErrors( ['example'] );
or
Session::flash('success', 'example');

在我的视图中,我尝试了几种方式,它们的结果都相同。只有在我手动使用 Session::put 存储返回消息时才不同。
@if (Session::has('error'))
@if ($errors->any())
@if (Session::has('success'))
@if (session()->has('success'))

这是我在路由上使用的模型。

Route::namespace('Front')->group(function(){
    # Homepage
     Route::get('/', 'ExampleFrontController@Home')->name('home');
})

Route::namespace('Admin')->group(function(){
    # Login
     Route::get('/admin/login', 'ExampleAdminController@Index')->name('admin.login');
})

我使用Session::put没有问题,但我的表单请求规则返回的值也未显示,这给我造成了问题。

1个回答

3
在问完问题后,我决定进行一项尚未完成的测试。
我对内核进行了注释:StartSession :: class和ShareErrorsFromSession :: class。
按计划,会话停止工作。
在我的情况下,我不得不将这两个类从$ middlewareGroups移动到$ middleware中,这解决了我的问题。
我做出了如下更改:
    protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        \Fruitcake\Cors\HandleCors::class,
        \App\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

针对此事

    protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\TrustProxies::class,
        \Fruitcake\Cors\HandleCors::class,
        \App\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        #    \Illuminate\Session\Middleware\StartSession::class,
        #    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        #    \Illuminate\Session\Middleware\AuthenticateSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

谢谢,我遇到了一个会话问题,因为401已过期,但是通过这个解决了。 - Jonathan G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接