Php Laravel 4的$errors结构

Php Laravel 4的$errors结构,php,laravel,laravel-4,Php,Laravel,Laravel 4,在Laravel 4中,每当每个请求都有一个变量$errors来显示请求中发生的错误。它的结构如下: object(Illuminate\Support\MessageBag)#120 (2) { ["messages":protected]=> array(1) { ["email"]=> array(1) { [0]=> string(40) "The email must be a valid email address."

在Laravel 4中,每当每个请求都有一个变量
$errors
来显示请求中发生的错误。它的结构如下:

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"
}
@if (count($errors->messages))
    <div class="error-box">
        <ul>
            @foreach ($errors->messages as $error)
                <li>{{{ $error }}}</li>
            @endforeach
        </ul>
    </div>
@endif
@foreach ($errors->all() as $error)
     <li>{{{ $error }}}</li>
@endforeach
我想我可以把这个代码放在我的应用程序的标题上,向用户提供输出,列出所有相关的消息,如下所示:

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"
}
@if (count($errors->messages))
    <div class="error-box">
        <ul>
            @foreach ($errors->messages as $error)
                <li>{{{ $error }}}</li>
            @endforeach
        </ul>
    </div>
@endif
@foreach ($errors->all() as $error)
     <li>{{{ $error }}}</li>
@endforeach
@if(计数($errors->messages))
    @foreach($errors->messages as$error)
  • {{{$error}}
  • @endforeach
@恩迪夫
但很明显我无法访问这样的消息


有人能给我解释一下
MessageBar$errors
的结构吗?更重要的是,如何循环所有错误消息以显示它们?

您不能直接执行
$errors->messages
,因为
illighted\Support\MessageBag
的messages属性为
[“messages”:protected]

您需要做的是像这样使用
all()

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"
}
@if (count($errors->messages))
    <div class="error-box">
        <ul>
            @foreach ($errors->messages as $error)
                <li>{{{ $error }}}</li>
            @endforeach
        </ul>
    </div>
@endif
@foreach ($errors->all() as $error)
     <li>{{{ $error }}}</li>
@endforeach
您还可以在以下位置查看使用Laravel的MessageBag可以执行的方法的完整列表:

  • Laravel 4.1:
  • Laravel 4.2:

您不能直接执行
$errors->messages
,因为
照明\Support\MessageBag
的messages属性为
[“messages”:protected]

您需要做的是像这样使用
all()

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"
}
@if (count($errors->messages))
    <div class="error-box">
        <ul>
            @foreach ($errors->messages as $error)
                <li>{{{ $error }}}</li>
            @endforeach
        </ul>
    </div>
@endif
@foreach ($errors->all() as $error)
     <li>{{{ $error }}}</li>
@endforeach
您还可以在以下位置查看使用Laravel的MessageBag可以执行的方法的完整列表:

  • Laravel 4.1:
  • Laravel 4.2:

除了@Unnawut的答案之外,您还可以访问如下错误

$errors->first();
因此,您可以只获得第一个错误,而不必循环所有错误。如果您想知道与特定组相关的特定错误(如电子邮件),您可以这样做

$errors->first('email');

除了@Unnawut的答案之外,您还可以访问如下错误

$errors->first();
因此,您可以只获得第一个错误,而不必循环所有错误。如果您想知道与特定组相关的特定错误(如电子邮件),您可以这样做

$errors->first('email');