Validation Laravel MessageBag errors数组在视图中为空,但如果我杀死脚本,则包含内容
我试图将错误返回到我的视图,这是我的控制器TestcategoryController的一部分Validation Laravel MessageBag errors数组在视图中为空,但如果我杀死脚本,则包含内容,validation,laravel,Validation,Laravel,我试图将错误返回到我的视图,这是我的控制器TestcategoryController的一部分 $rules =array( 'name' => 'required' ); $validator = Validator::make(Input::all(), $rules); //process if($validator->fails()){ return Redirect::to('testcategory/
$rules =array(
'name' => 'required'
);
$validator = Validator::make(Input::all(), $rules);
//process
if($validator->fails()){
return Redirect::to('testcategory/create')->withErrors($validator);
}
在视图testcategory/create
中,如果我尝试输出以下错误
@if($errors->any())
{{ $errors->first('name') }}
@endif
我什么也得不到。但是如果我{{dd($errors)}}
我得到
object(Illuminate\Support\ViewErrorBag)#91 (1) { ["bags":protected]=> array(1) {
["default"]=> object(Illuminate\Support\MessageBag)#92 (2)
{ ["messages":protected]=> array(1)
{ ["name"]=> array(1) { [0]=> string(27) "The name field is required." } }
["format":protected]=> string(8) ":message" } } }
我得到错误的唯一方法是我杀死脚本。我做错了什么?如果在您的案例中没有得到任何结果,那么这意味着您已经用其他内容或空对象覆盖了$errors对象-请检查您传递给视图的代码和数据。您的代码是完全有效的,运行良好-我已经在本地进行了测试。也许,您将空$errors对象传递给了子视图,但在其他视图中使用了正确的对象。您需要像这样使用它:
{{ $errors->getBag('default')->first('name') }}
另一个问题可能是$errors没有保存到会话变量$errors中,并且视图中没有显示任何内容 以下是同一问题的一个例子: 对我来说,上面链接中定义的解决方案有效。 解决方案:在app\Http\Kernel.php中 移动
\illumb\Session\Middleware\StartSession::class,
从$middlewareGroups到$Middleware
之前
之后
添加中间件,并解决了..我在Laravel 8.0中遇到了同样的问题 我唯一能解决这个问题的方法是逐层输入错误包,直到我手动获得消息:
@if (count($errors->getBags()))
<div class="alert alert-danger">
<ul>
@foreach ($errors->getBags() as $bag)
@foreach ($bag->getMessages() as $messages)
@foreach ($messages as $message)
<li>{{ $message }}</li>
@endforeach
@endforeach
@endforeach
</ul>
</div>
@endif
@if(计数($errors->getBags())
@foreach($errors->getBags()作为$bag)
@foreach($bag->getMessages()作为$messages)
@foreach($messages作为$message)
- {{$message}}
@endforeach
@endforeach
@endforeach
@恩迪夫
如果我转储此脚本,它会显示错误,但如果我不转储并终止脚本,它不会显示在视图中。似乎使用自定义提交函数会覆盖错误包。@briankip我正在通过Javascript在单击
按钮的方法上设置表单字段值。这就是我没有得到它的原因吗?很可能。但我必须查看代码才能确认。太棒了,你刚刚解决了我的问题!谢谢,巴迪:)我也面临同样的问题,但我认为在变量之间切换会话中间件之后,问题仍然存在。有什么想法吗?
@if (count($errors->getBags()))
<div class="alert alert-danger">
<ul>
@foreach ($errors->getBags() as $bag)
@foreach ($bag->getMessages() as $messages)
@foreach ($messages as $message)
<li>{{ $message }}</li>
@endforeach
@endforeach
@endforeach
</ul>
</div>
@endif