いつもお世話になっております。
以下のような実装をしているチェックボックスを配置した画面において、
Flashセッションから値を復元するスマートな方法が知りたいです。
チェックボックスについて
- 複数のチェックボックスの中から必ず1つを選択しなくてはいけない
- チェックボックス自体は、別の画面からDBに登録することで、いくらでも増やすことができる
- チェックボックスの状態はFormValidatorで一括チェック
- チェック状態はPOSTデータとして送信する
ソースコード
blade
1//bladeテンプレート 2@foreach($elements as $element) 3{!! Form::checkbox('chkboxes[]'.$element['value'], $element['value'], old('chkboxesの配列の要素から任意の値を取りたい')) !!} 4@endforeach
PHP
1class MyFormRequest extends FormRequest { 2 /** 3 * Get the validation rules that apply to the request. 4 * 5 * @return array 6 */ 7 public function rules() 8 { 9 return [ 10 'chkboxes' => 'required', 11 ]; 12 } 13} 14
PHP
1class UserController extends Controller { 2 3 public function test(MyFormRequest $request) 4 { 5 $request->flash(); 6 return view('test'); 7 } 8}
試したこと
- old('chkboxes')[0]でchkboxes配列の最初の要素に入っている$element['value']の値は取れる
ただし、接尾に必ず'1'が入ってくる
例:$element['value']が'10'の場合、oldで取ると、なぜか'101'になる
- Form::checkbox('chkboxes[]' をやめる
復元は可能になるが、validationは纏めてチェックしてくれなくなるため、処理が冗長になる
課題
- chkboxesの値は、チェックされているものだけがPOSTパラメータに乗るため、配列の要素としては前詰まりになる。
array_searchなど使えば取れるとは思いますが、ゴリゴリ感があるため、もっと綺麗に実装したい。
- 末尾に必ず'1'が書かれているのを、文字列変換以外で何とかしたい。(バグなのかな・・・)
何か良い書き方がありましたら、教えてください。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/07 01:05