2016-09-17 15 views
4

Laravelエラーダンプ($errors)を使用して配列からキーを取得しようとしています。laravelエラーメッセージの配列でエラーキーを取得する方法

配列は、エラーメッセージが正常に動作を取得するために@foreachループを使用して、この

ViewErrorBag {#169 ▼ 
    #bags: array:1 [▼ 
    "default" => MessageBag {#170 ▼ 
     #messages: array:2 [▼ 
     "name" => array:1 [▼ 
      0 => "The name field is required." 
     ] 
     "role_id" => array:1 [▼ 
      0 => "The role id field is required." 
     ] 
     ] 
     #format: ":message" 
    } 
    ] 
} 

のように見えます。

@foreach($errors->all() as $error) 
    <li>{{$error}}</li> 
@endforeach 

しかし、私はそれnamerole_idを取得したいです。それを達成するためにとにかくありますか?これまでのところ、私は以下の方法と運がない他の方法を試しました。

@foreach ($errors->all() as $key => $value) 
     Key: {{ $key }} 
     Value: {{ $value }} 
@endforeach 

答えて

5

$errors->all()は、単一のアレイ(数値インデックス付き)内のすべてのフィールドのすべてのエラーの配列を返す、からです。たとえば、あなたが明示的にエラーからアイテムを取得することがあり、

@foreach($errors->getMessages() as $key => $message) 
    {{$key}} = {{$message}} 
@endforeach 

を:しかし、あなたがループにしたいし、各key => valueペアを取得したい場合は

あなたはこのような何かを試すことが

{{ $errors->first('name') }} // The name field is required. 

@if($errors->has('name')) 
    {{ $errors->first('name') }} 
@endif 

多分それはあなたがこのようなものを使用してフィールドに任意のエラーを求める前にチェックするのが賢明です

これは、エラーが属するフィールドの上部/下部に各エラーを表示するのに役立ちます。

+1

こんにちは。返信いただきありがとうございます。私は最初の方法を試してみるとこのエラーが出ます。 htmlspecialchars()は、パラメータ1が配列であると想定しています。 2番目のソリューションは完璧に機能します。しかし、私はまだそのキーの値を取得する方法を知りたいのですが、フォームにある各入力に対して2番目のソリューションを配置する必要があるからです。返信を待っています。 –

+2

私はタグidに直接$キーを使用しました。私は$キーを印刷しようとしているのは面倒な部分だと思います。大きなおかげで:D –

+1

あなたがそれを作ってうれしい、歓迎:-) –

2

あなたは$誤差の値をのvar_dump場合、あなたは配列を取得使用

@foreach($errors->getMessages() as $key => $error) 
    Key: {{ $key }} 
    Value: {{ $error[0] }} 
@endforeach 

array(1) { [0]=> string(13) "Successfully!" }

ので、あなたがにその配列のキー(私たちの場合は0)が必要ですメッセージにアクセス

関連する問題