Laravel 表单验证,为啥我的视图中没有可用的 $errors 变量?
Posted
技术标签:
【中文标题】Laravel 表单验证,为啥我的视图中没有可用的 $errors 变量?【英文标题】:Laravel form validation, why I don't have the $errors variable available on my view?Laravel 表单验证,为什么我的视图中没有可用的 $errors 变量? 【发布时间】:2016-07-01 11:19:55 【问题描述】:取自 lrvl 5.1 文档,我读到: 在控制器中使用这些行:
$this->validate($request, [
'title' => 'required|unique:posts|max:255',
'author.name' => 'required',
'author.description' => 'required',
]);
如果验证未通过,控制器将停止执行并重定向回之前的位置。
这是正确的。
然后医生说: "$errors 变量将始终在每个请求的所有视图中可用"
然后建议如下刀片代码:
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li> $error </li>
@endforeach
</ul>
</div>
@endif
但实际上我会得到一个 ErrorException 未定义的变量错误....
我错过了什么?
谢谢
【问题讨论】:
确保您的代码使用网络中间件。 显示你的控制器并查看源代码。 如果您在没有 Web 中间件的情况下使用laravel
5.2 可能会发生这种情况,导致在 Web 中间件中引导的会话中的变量存储错误
现在使用网络中间件。像魅力一样工作。谢谢!!!
【参考方案1】:
我会回答自己这个问题, 以防万一还不清楚评论的解决方案。 (感谢 train_fox 的提示)。
只需添加“网络”中间件使用。 在表单操作(get/post)中作为目标的路由中
例子:
Route::group(['middleware' => 'web'],
function()
Route::post('/edit' , 'My_Controller@edit');
);
变量 $errors 在要解析的视图中变为可用。
【讨论】:
以上是关于Laravel 表单验证,为啥我的视图中没有可用的 $errors 变量?的主要内容,如果未能解决你的问题,请参考以下文章
为啥如果我不将 csrf_field() 放在表单的末尾(在 Laravel 5 视图中)我会获得 TokenMismatchException?