我试图重定向到上一页的消息时,有一个致命的错误。
App::fatal(function($exception)
{
return Redirect::back()->with('msg', 'The Message');
}
在视图中尝试访问msg
Sessions::get('msg')
但是什么都没有渲染,是我做错了吗?
我试图重定向到上一页的消息时,有一个致命的错误。
App::fatal(function($exception)
{
return Redirect::back()->with('msg', 'The Message');
}
在视图中尝试访问msg
Sessions::get('msg')
但是什么都没有渲染,是我做错了吗?
当前回答
只需设置flash消息和重定向回从你的控制器功能。
session()->flash('msg', 'Successfully done the operation.');
return redirect()->back();
然后你可以在视图刀片文件中得到消息。
{!! Session::has('msg') ? Session::get("msg") : '' !!}
其他回答
我也遇到过同样的问题,这个方法奏效了。
控制器
return Redirect::back()->withInput()->withErrors(array('user_name' => $message));
View
<div>{{{ $errors->first('user_name') }}}</div>
在控制器
例如
return redirect('login')->with('message',$message);
刀片锉 消息将存储在会话中而不是变量中。
例如
@if(session('message'))
{{ session('message') }}
@endif
在Laravel 5.5中:
return back()->withErrors($arrayWithErrors);
在使用Blade的视图中:
@if($errors->has())
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
Laravel 5.6。*
控制器
if(true) {
$msg = [
'message' => 'Some Message!',
];
return redirect()->route('home')->with($msg);
} else {
$msg = [
'error' => 'Some error!',
];
return redirect()->route('welcome')->with($msg);
}
叶片模板
@if (Session::has('message'))
<div class="alert alert-success" role="alert">
{{Session::get('message')}}
</div>
@elseif (Session::has('error'))
<div class="alert alert-warning" role="alert">
{{Session::get('error')}}
</div>
@endif
Enyoj
我自己不再为laravel写这篇文章,而是支持为您处理这一切的Laracasts包。它真的很容易使用,并保持您的代码干净。甚至还有一个laracast来说明如何使用它。你所要做的就是:
通过Composer导入包。
"require": {
"laracasts/flash": "~1.0"
}
在app/config/app.php中包含服务提供者。
'providers' => [
'Laracasts\Flash\FlashServiceProvider'
];
在底部的同一个文件中添加一个facade别名:
'aliases' => [
'Flash' => 'Laracasts\Flash\Flash'
];
将HTML拖到视图中:
@include('flash::message')
在消息的右侧有一个关闭按钮。这依赖于jQuery,所以请确保在引导之前添加它。
可选的变化:
如果你不使用bootstrap或者想要跳过flash消息的包含并自己编写代码:
@if (Session::has('flash_notification.message'))
<div class="{{ Session::get('flash_notification.level') }}">
{{ Session::get('flash_notification.message') }}
</div>
@endif
如果你想查看@include('flash::message')拉进来的HTML,你可以在vendor/laracasts/flash/src/views/message.blade.php中找到它。
如果你需要修改部分做:
php artisan view:publish laracasts/flash
这两个包视图现在将位于' app/views/packages/laracasts/flash/'目录中。