質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1135閲覧

laravel foreachで複数表示させているinputに入力している箇所は値を保持させ、未入力の箇所のみにエラーメッセージを表示させたい

YuusukeArtRoom

総合スコア23

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/09/21 08:01

blade

1@foreach ($students as $student) 2 <tr> 3  <th> 4   <span class="number">出席番号:{{ $student['studentnumber'] }}</span> 5   <input name="studentinfos_studentnumber[]" type="hidden" value="{{ $student['studentnumber'] }}"> 6   <span class="name">氏名:{{ $student['studentname'] }}</span> 7   <input name="studentinfos_studentname[]" type="hidden" value="{{ $student['studentname'] }}"> 8 </th> 9 <td> 10 <input name="points[]" type="text" placeholder="例:95" value="{{ old('points[]')}}"> 11 </td> 12 </tr> 13@endforeach

上記で学生の試験の得点を入力できるようになっています。
試したこと下記

blade

1@foreach ($students as $student) 2 <tr> 3  <th> 4   <span class="number">出席番号:{{ $student['studentnumber'] }}</span> 5   <input name="studentinfos_studentnumber[]" type="hidden" value="{{ $student['studentnumber'] }}"> 6   <span class="name">氏名:{{ $student['studentname'] }}</span> 7   <input name="studentinfos_studentname[]" type="hidden" value="{{ $student['studentname'] }}"> 8 </th> 9 <td> 10 <input name="points[]" type="text" placeholder="例:95" value="{{ old('points[]')}}">     /*old()を使っていますが値が保持されません。*/ 11    <span class="errrormessage">       /*こちらがバリデーションメッセージ*/ 12 @if ($errors->has('points[]')) 13 {{ $errors->get('points[]')}}       14 @endif 15    </span> 16 </td> 17 </tr> 18@endforeach

エラーメッセージは出るのですが、1つ空白があると全ての項目にエラーメセージがついてしまいます。
また、エラーメッセージが表示されると値が全て空になるのを解決したいです、何かヒントをくれるとありがたいです。

request

1 public function messages() 2 { 3 return[ 4 'examplan_title.required' => '*必ず選択してください', 5 'points[].required' => '*必須', 6 ]; 7 }

おそらく、バリデーションの実装の仕方で何かしらの設定しないといけないとは思うのですが、調べていても当てはまるものが見つからなかったのでこちらで質問させていただきました。お力を貸していただけるとありがたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

@foreach ($students as $student) <tr> <th> <span class="number">出席番号:{{ $student['studentnumber'] }}</span> <input name="studentinfos_studentnumber[{{ $student['studentnumber'] }}]" type="hidden" value="{{ $student['studentnumber'] }}"> <span class="name">氏名:{{ $student['studentname'] }}</span> <input name="studentinfos_studentname[{{ $student['studentnumber'] }}]" type="hidden" value="{{ $student['studentname'] }}"> </th> <td> <input name="points[{{ $student['studentnumber'] }}]" type="text" placeholder="例:95" value="{{ old('points.'.$student['studentnumber'])}}"> <span class="errrormessage"> @if ($errors->has('points.'.$student['studentnumber'])) {{ $errors->first('points.'.$student['studentnumber'])}} @endif </span> </td> </tr> @endforeach

投稿2021/09/23 03:52

YuusukeArtRoom

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

現在「points」は配列でキーを決めずにPOSTしていますが、
例えば「points[{{$student['studentnumber']}}]」のように、出席番号をキーにしてPOSTしてみてはどうでしょうか?

そうすればバリデーション結果はそのキーに紐づくはずですし、
$errors->getする際もキーまで指定してあげればそのデータに紐づくエラーメッセージが取得できるのではないかなと思います

投稿2021/09/21 17:56

Ruizi_Luigi

総合スコア208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YuusukeArtRoom

2021/09/22 00:36

ご回答ありがとうございます。 早速試してみますね。 後ほど結果を報告させていただきます!
YuusukeArtRoom

2021/09/22 02:26

リクエスト側の挙動はどうなりますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問