こんにちは。
フォームで複数選択可のチェックボックスを使っています。何も選択しないことも可能です。
回答結果をDBに格納する際、チェックが複数ついている場合、回答を文字列にしてからではないといけないということでimplodeメソッドを使っています。
以下のサイトを参考にしてコードを組みました。
PHP関数 - 配列を文字列に変換 - implode() - PHP入門 - Webkaru
PHP: implode-Manual
コントローラー
php
1public function store(ProductRequest $request) 2 { 3 $product = new Product; 4 $product->user_id = $request->user()->id; 5 if ($request->has('allergy')) { 6 7 $allergy = $request->array('allergy'); //修正前 8 $allergy = $request->allergy; //修正後 9 10 $string = implode(",", $allergy); 11 $product->allergy = $string; 12 } 13 14 $product->save(); 15 return redirect('product/create')->with('message', '登録が完了しました。。'); 16 }
blade
php
1<form action="{{ url('/product') }}" method="post" enctype="multipart/form-data" class="form-group"> 2 {{ csrf_field() }} 3 <p><label>アレルギー物質<br> 4 5 <input type="checkbox" name="allergy" value="1"> えび //修正前 6 <input type="checkbox" name="allergy" value="2"> かに //修正前 7 <input type="checkbox" name="allergy" value="3"> 小麦 //修正前 8 <input type="checkbox" name="allergy" value="4"> そば //修正前 9 10 <input type="checkbox" name="allergy[]" value="1"> えび //修正後 11 <input type="checkbox" name="allergy[]" value="2"> かに //修正後 12 <input type="checkbox" name="allergy[]" value="3"> 小麦 //修正後 13 <input type="checkbox" name="allergy[]" value="4"> そば //修正後 14 15 </label></p> 16 17 <p><button type="submit" class="btn btn-success">登録</button></p> 18</form>
しかしこのコードだと、
Method App\Http\Requests\ProductRequest::array does not exist.
というエラーが帰ってきてしまいます。"Laravel implode 使い方"などのキーワードで検索してみたのですが、答えを見つけることができませんでした。
間違っている箇所わかる方いらっしゃいましたら、恐縮ですがご教示いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/26 16:47
2021/08/26 16:55