Enr*_*ent 1 php laravel laravel-4
在Laravel 4中,每次请求时都有一个变量$errors来显示请求中发生的错误.IT有这样的结构:
object(Illuminate\Support\MessageBag)#120 (2) {
["messages":protected]=>
array(1) {
["email"]=>
array(1) {
[0]=>
string(40) "The email must be a valid email address."
}
}
["format":protected]=>
string(8) ":message"
}
Run Code Online (Sandbox Code Playgroud)
我想我可以将此代码放在我的应用程序的标题上,以便向用户提供输出,列出所有相关消息,如下所示:
@if (count($errors->messages))
<div class="error-box">
<ul>
@foreach ($errors->messages as $error)
<li>{{{ $error }}}</li>
@endforeach
</ul>
</div>
@endif
Run Code Online (Sandbox Code Playgroud)
但显然我无法访问这样的消息.
有人可以解释一下我的结构MessageBar $errors,更重要的是,如何循环显示所有错误信息,以显示它们?
你不能$errors->messages直接做,因为Illuminate\Support\MessageBag它的消息属性为["messages":protected].
你需要做的是这样使用all():
@foreach ($errors->all() as $error)
<li>{{{ $error }}}</li>
@endforeach
Run Code Online (Sandbox Code Playgroud)
或事实上,因为MessageBag也可以表现为一个数组,你可以做count(),并foreach在其上直接,如:
@if (count($errors)) // or $errors->count()
<div class="error-box">
<ul>
@foreach ($errors as $error)
<li>{{{ $error }}}</li>
@endforeach
</ul>
</div>
@endif
Run Code Online (Sandbox Code Playgroud)
您还可以在以下位置查看可以使用Laravel的MessageBag执行的完整方法列表: