【问题标题】:Laravel 5.8.x (with AdminLTE) not showing flash messagesLaravel 5.8.x(带有 AdminLTE)不显示闪信息
【发布时间】:2020-01-28 03:49:13
【问题描述】:

我注意到我的 Flash 消息由于某种原因停止显示。

使用密码重置路由(/passwords/reset),我看到电子邮件正在发送,但是,POST 后的返回应该显示一条消息,类似于“E-mail sent”。

关键是在失败或成功的情况下都不显示消息。

资源/视图/密码/email.blade.php

@if (session('status'))
     <div class="alert alert-success">
          {{ session('status') }}
     </div>
@endif

vendor/laravel/framework/src/Illuminate/Foundation/Auth/SendsPasswordResetEmails.php

public function sendResetLinkEmail(Request $request)
{
    $this->validateEmail($request);

    $response = $this->broker()->sendResetLink(
        $this->credentials($request)
    );

    return $response == Password::RESET_LINK_SENT
                ? $this->sendResetLinkResponse($request, $response)
                : $this->sendResetLinkFailedResponse($request, $response);
}

...

protected function sendResetLinkResponse(Request $request, $response)
{
    return back()->with('status', trans($response));
}

EDIT 1 (2020-02-24):中间件可以在这种情况下干扰吗?

这是我的app/Http/Kernel.php

protected $middleware = [
    \App\Http\Middleware\TrustProxies::class,
    \App\Http\Middleware\CheckForMaintenanceMode::class,
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
    \App\Http\Middleware\TrimStrings::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    \Illuminate\Session\Middleware\StartSession::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',
        'bindings',
    ],
];

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];

protected $middlewarePriority = [
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\Authenticate::class,
    \Illuminate\Session\Middleware\AuthenticateSession::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
    \Illuminate\Auth\Middleware\Authorize::class,
];

有人可以帮我再显示一次闪信吗?

谢谢!

【问题讨论】:

  • dump $response 看是否传值
  • $response 可以。值为passwords.sent
  • 这个$response 应该出现在我的视图中,但由于某种原因,Laravel 忽略(或不保存)闪存消息

标签: php laravel flash-message


【解决方案1】:

在你的控制器中

session()->flash('status', "Send Successfully");
return  redirect()->back();

在你看来

@if (session()->has('status'))
<div class="alert alert-success">{{ session()->get('status') }}</div>
@endif                                                    

【讨论】:

  • 没用。我把dd(session())_flash 属性看起来像这样:"_flash" =&gt; array:2 [▼ "old" =&gt; [] "new" =&gt; [] ]
猜你喜欢
  • 2021-01-04
  • 2014-10-23
  • 1970-01-01
  • 2021-02-26
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 2017-06-26
相关资源
最近更新 更多