【发布时间】:2015-11-18 07:02:03
【问题描述】:
在 Laravel 5.0 和 4.* 中有这个选项来检查 Session 是否有 flash_messages:
控制器:
public function store(Request $request) {
Session::flash('flash_message', 'Success');
return redirect('somepage');
}
然后你可以在你的布局中调用它:
@if (Session::has('flash_message'))
<p>{{ Session::get('flash_message') }}</p>
@endif
这工作得很好,但是在 Laravel 5.1 中它发生了变化。现在它存储在请求变量中。因此,我在控制器中将其更改为:
public function store(Request $request) {
$request->session()->flash('flash_message', 'Success');
return redirect('somepage');
}
我在布局中称之为:
@if($request->session()->has('flash_message'))
<p>{{ $request->session()->get('flash_message') }}</p>
@endif
我正在按照 Laravel 5.1 文档中的说明进行操作:
确定会话中是否存在项目
has 方法可用于检查会话中是否存在项目。 如果项目存在,此方法将返回 true:
if ($request->session()->has('users')) { // }
现在这对于 store 方法非常有效,因为我只在那里添加了一个 flash_message,但如果我想访问另一个方法,如索引、创建、编辑等,它会显示此错误:
错误异常
未定义变量:请求
我了解请求变量未在其他方法中声明,我可以使用 isset($request) 解决此 if 语句。
是否有更好的解决方案来检查我的 flash_message 是否设置在 $request 变量中,就像在早期版本的 Laravel 中一样?
【问题讨论】:
-
你仍然可以在 Blade 视图中使用
Session外观,就像在 Laravel 4 中一样。文档中使用的示例是使用Request来显示方法参数注入。
标签: php session laravel laravel-5.1 flash-message