Laracasts/flash laravel 5.4 中未显示
Laracasts/flash not showing in laravel 5.4
我最近将我的项目从 Laravel 5.1 升级到 5.4。除了未显示的 flash 消息外,一切正常。我执行了以下检查以确保我没有做错什么:
- RouteServiceProvider.php
web 中间件组由 mapWebRoutes 函数自动添加到我的路由中
+--------+----------+-----+--------+------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-----+---------------------------------------------------+--------------+
| | GET|HEAD | / | | App\Http\Controllers\HomeController@index| web,auth |
- Kernel.php
下面是Kernel.php
中中间件组的内容
'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,
],
flash() 放在重定向之前
flash()->成功('Bob stone Added Successfully');
$target_location = 'cia_agent/' 。 $agent_id .'/个人资料';
return 重定向($target_location);
只有一个 302 响应是 return 在 Chrome 开发人员工具的网络中编辑的。
以上代码在 Laravel 5.1 中有效,我在这里遗漏了什么?
经过挖掘,我找到了解决方案。在 /resources/views/vendor/flash/message.blade.php 中,我有以下适用于 Laravel 5.1
的代码
@if (Session::has('flash_notification.message'))
@if (Session::has('flash_notification.overlay'))
@include('flash::modal', ['modalClass' => 'flash-modal', 'title' => Session::get('flash_notification.title'), 'body' => Session::get('flash_notification.message')])
@else
<div class="alert alert-{{ Session::get('flash_notification.level') }}">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
{{ Session::get('flash_notification.message') }}
</div>
@endif
@endif
但是由于用于显示消息的 Laracasts/flash 视图部分发生了变化,我将新代码放入文件中:
@foreach ((array) session('flash_notification') as $message)
@if ($message['overlay'])
@include('flash::modal', [
'modalClass' => 'flash-modal',
'title' => $message['title'],
'body' => $message['message']
])
@else
<div class="alert
alert-{{ $message['level'] }}
{{ $message['important'] ? 'alert-important' : '' }}"
role="alert"
>
@if ($message['important'])
<button type="button"
class="close"
data-dismiss="alert"
aria-hidden="true"
>×</button>
@endif
{!! $message['message'] !!}
</div>
@endif
@endforeach
{{ session()->forget('flash_notification') }}
现在一切正常。
我最近将我的项目从 Laravel 5.1 升级到 5.4。除了未显示的 flash 消息外,一切正常。我执行了以下检查以确保我没有做错什么:
- RouteServiceProvider.php
web 中间件组由 mapWebRoutes 函数自动添加到我的路由中
+--------+----------+-----+--------+------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-----+---------------------------------------------------+--------------+
| | GET|HEAD | / | | App\Http\Controllers\HomeController@index| web,auth |
- Kernel.php
下面是Kernel.php
中中间件组的内容 '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,
],
flash() 放在重定向之前
flash()->成功('Bob stone Added Successfully'); $target_location = 'cia_agent/' 。 $agent_id .'/个人资料'; return 重定向($target_location);
只有一个 302 响应是 return 在 Chrome 开发人员工具的网络中编辑的。
以上代码在 Laravel 5.1 中有效,我在这里遗漏了什么?
经过挖掘,我找到了解决方案。在 /resources/views/vendor/flash/message.blade.php 中,我有以下适用于 Laravel 5.1
的代码@if (Session::has('flash_notification.message'))
@if (Session::has('flash_notification.overlay'))
@include('flash::modal', ['modalClass' => 'flash-modal', 'title' => Session::get('flash_notification.title'), 'body' => Session::get('flash_notification.message')])
@else
<div class="alert alert-{{ Session::get('flash_notification.level') }}">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
{{ Session::get('flash_notification.message') }}
</div>
@endif
@endif
但是由于用于显示消息的 Laracasts/flash 视图部分发生了变化,我将新代码放入文件中:
@foreach ((array) session('flash_notification') as $message)
@if ($message['overlay'])
@include('flash::modal', [
'modalClass' => 'flash-modal',
'title' => $message['title'],
'body' => $message['message']
])
@else
<div class="alert
alert-{{ $message['level'] }}
{{ $message['important'] ? 'alert-important' : '' }}"
role="alert"
>
@if ($message['important'])
<button type="button"
class="close"
data-dismiss="alert"
aria-hidden="true"
>×</button>
@endif
{!! $message['message'] !!}
</div>
@endif
@endforeach
{{ session()->forget('flash_notification') }}
现在一切正常。