前提
laravelを使用し、標準のバリデーション処理とエラーメッセージの生成の機能を使用しています。
実現したいこと
postで下記のような配列のリクエストデータを送りlaravelのバリデーション機能を使用し、バリデーション判定を行ったあとエラーメッセージを表示しようと思ってます。
エラーメッセージの表示をする際、user.1.img、user.2.img単位でblade上にはエリアを作りたいので、「user.1.img」の「1」は「@foreach($user as $index => $value)」の$indexを使おうと思ってます。
しかし「user.{{ $index }}.img」とすると何も表示されません。「user.1.img」を直書きするとメッセージは表示されるのに「user.{{ $index }}.img」のように変数「$index 」を使うと表示されないのでどうすればメッセージを表示することができるのでしょうか?
※$userは「php2」の内容が入ってます。
発生している問題・エラーメッセージ
blade.php
1@foreach($user as $index => $value) 2<span> 3@php 4 foreach ($errors->get('user.{{ $index }}.img') as $messages) { 5 foreach ($messages as $message){ 6 echo $message; 7 } 8 } 9@endphp 10</span> 11@endforeach
該当のソースコード
php1.php
1'user' => [ 2 1 => [ 3 'name' => 'taro', 4 'img' => [ 5 'img1' => Illuminate\Http\UploadedFile::__set_state(array( 6 'test' => false, 7 'originalName' => 'img1.png', 8 'mimeType' => 'application/octet-stream', 9 'error' => 1, 10 'hashName' => NULL, 11 )), 12 'img2' => Illuminate\Http\UploadedFile::__set_state(array( 13 'test' => false, 14 'originalName' => 'img2.png', 15 'mimeType' => 'application/octet-stream', 16 'error' => 1, 17 'hashName' => NULL, 18 )), 19 'img3' => Illuminate\Http\UploadedFile::__set_state(array( 20 'test' => false, 21 'originalName' => 'img3.png', 22 'mimeType' => 'application/octet-stream', 23 'error' => 1, 24 'hashName' => NULL, 25 )), 26 ] 27 ], 28 2 => [ 29 'name' => 'jiro', 30 'img' => [ 31 'img1' => Illuminate\Http\UploadedFile::__set_state(array( 32 'test' => false, 33 'originalName' => 'img1.png', 34 'mimeType' => 'application/octet-stream', 35 'error' => 1, 36 'hashName' => NULL, 37 )), 38 'img2' => Illuminate\Http\UploadedFile::__set_state(array( 39 'test' => false, 40 'originalName' => 'img2.png', 41 'mimeType' => 'application/octet-stream', 42 'error' => 1, 43 'hashName' => NULL, 44 )), 45 'img3' => Illuminate\Http\UploadedFile::__set_state(array( 46 'test' => false, 47 'originalName' => 'img3.png', 48 'mimeType' => 'application/octet-stream', 49 'error' => 1, 50 'hashName' => NULL, 51 )), 52 ] 53 ], 54];
php2.php
1$user => [ 21 => 'taro', 32 => 'jiro'; 4]
試したこと
$errors->get("'user.'.{{ $index }}.'.img'")にして出力しても何も表示されない
$errors->get('user.1.img'),$errors->get('user.2.img')はエラーメッセージ は表示される。
「$key = 'user.' .$index .'img';」にしてから
$errors->get('{{ $key }}')にして出力しても何も表示されない
回答2件
あなたの回答
tips
プレビュー