お世話になっております。
当方Laravel5.5にてWebSiteを構築しております、
環境はmac OS Mojave10.14.2
ブラウザはGoogle Chrome バージョン: 71.0.3578.98になります。
やりたいこと
下記を実装しておりますが、下記5番の問題が発生しています。
validationエラーに引っかかった場合でも、
value値にold値を持たせるためにはどうすればよいでしょうか?
- 入力画面にて、ラジオボタンで選択を行う
(ラジオボタンの選択肢は、データベースから値を取得し、
view上でforeachを使用して表示しています)
0. 次の画面に進む確認ボタンを押下する
0. ラジオボタン以外の部分でvalidationエラー(required)となり
入力画面にリダイレクトされる
※この際ラジオボタンのチェックを1番で選択した箇所(old)で保持
0. validationエラーとなった項目を入力し、再度確認ボタンを押下
※この際、(1番で選択した箇所で維持されているため)ラジオボタンには触れない
0. ラジオボタンのvalueがnullとなっており(dd()を使用して確認)、
validationエラー(ラジオボタンのrequiredに引っかかる)となる
現状
validationでリダイレクトされた際も、
checkのoldは維持できているので、
valueのみが問題かと思いますが、
原因がわかりません。
Controller
php
1 public function upload_data() 2 { 3 $dataitems = $this->DataService->getdataitems(); 4 return view('data.upload_data',compact('dataitems')); 5 } 6 7 public function upload_data_confirm(DataValidationRequest $request) 8 { 9 $confrmdata = $request->all(); 10 $confrmdata['data_group_id'] = $confrmdata['data_group_id'][0]; 11 $user = \Auth::user(); 12 $showdataitems = $this->DataService->convertdataitems($confrmdata); 13 return view('data.upload_data_confirm',compact('user','showdataitems','confrmdata')); 14 } 15
DataService
php
1class DataService 2{ 3 public function getdataitems(){ 4 $this->data_group = DatagroupModel::pluck('data_group_name','data_group_id'); 5 return $this; 6 } 7 public function convertdataitems($data){ 8 $dataitems = $this->getdataitems(); 9 10 $showdataitems['data_group'] = $dataitems->data_group[$data['data_group_id']]; 11 12 return $showdataitems; 13 } 14 15}
入力画面のview
php
1 <?php 2 $i = 0; 3 foreach($dataitems->data_group as $key => $val) { 4 5 if(old('data_group_id[0]') === null) 6 { if($i === 0){$checked = "checked";} 7 else{$checked = '';} 8 } 9 else{ 10 if($i === old('data_group_id[0]')-1){$checked = "checked";} 11 else{$checked = '';} 12 } 13 14 echo "<div class='pretty p-default p-round vertical-align mx-1'> 15 <input type='radio' name='data_group_id[]' value='$key' {$checked}> 16 <div class='state'> 17 <label class='text-left my-auto'> 18 {$val} 19 </div> 20 </div>"; 21 $i++; 22 }; 23 24 ?> 25 @if ($errors->has('data_group_id')) 26 <span class="invalid-help-block"> 27 <strong>{{ $errors->first('data_group_id') }}</strong> 28 </span> 29 @endif 30
Validation
php
1class DataValidationRequest extends FormRequest 2{ 3 /** 4 * Determine if the user is authorized to make this request. 5 * 6 * @return bool 7 */ 8 public function authorize() 9 { 10 return true; 11 } 12 13 /** 14 * Get the validation rules that apply to the request. 15 * 16 * @return array 17 */ 18 public function rules(Request $request) 19 { 20 return [ 21 'data_group_id' => 'required', 22 ]; 23 } 24 25 public function attributes() { 26 return [ 27 'data_group_id' => 'データグループ', 28 ]; 29 } 30} 31
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。