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

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

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

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

779閲覧

laravelでチェックボックスがチェックされているかの情報を取得したい

ttpk

総合スコア338

Laravel

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/04/10 14:55

編集2022/04/11 12:01

ご覧いただきありがとうございます。
laravel 8.83.6で検索機能を実装しています

検索画面でチェックボックスにチェックが入っていた場合
検索用のSQLの検索条件に追加したいです。

検索画面(home.blade.php)
検索条件にはチェックボックスでないものもあり、入力があったもののみ
検索条件として使用する想定です

html

1 <form method="post" action="{{url('/search')}}"> 2 @csrf 3 {{method_field('get')}} 4 <div class="form-group"> 5 <label>目的で検索</label> 6 <div class="custom-control custom-checkbox"> 7 <label> 8 <input type="checkbox" class="custom-control-input" name="use[]" value="party">宴会 9 </label> 10 </div> 11 <div class="custom-control custom-checkbox"> 12 <label> 13 <input type="checkbox" class="custom-control-input" name="use[]" value="small">少人数 14 </label> 15 </div> 16 <div class="custom-control custom-checkbox"> 17 <label> 18 <input type="checkbox" class="custom-control-input" name="use[]" value="girls">女子会 19 </label> 20 </div> 21 </div> 22 <div class="form-group"> 23 <label>食べたいもので検索</label> 24 <div class="custom-control custom-checkbox"> 25 <label> 26 <input type="checkbox" class="custom-control-input" name="food[]" value="seafood">海鮮 27 </label> 28 </div> 29 <div class="custom-control custom-checkbox"> 30 <label> 31 <input type="checkbox" class="custom-control-input" name="food[]" value="brandcow">銘柄牛 32 </label> 33 </div> 34 <div class="custom-control custom-checkbox"> 35 <label> 36 <input type="checkbox" class="custom-control-input" name="food[]" value="localsake">地酒 37 </label> 38 </div> 39 <div class="custom-control custom-checkbox"> 40 <label> 41 <input type="checkbox" class="custom-control-input" name="food[]" value="craftbeer">クラフトビール 42 </label> 43 </div> 44 </div> 45 46 <div class="text-center"> 47 <button type="submit" class="btn btn-primary col-md-5">検索</button> 48 </div> 49 50 </form> 51

Controllerの検索メソッド

PHP

1 public function search(Request $request){ 2 $keyword_name = $request->shop_name; 3 $keyword_station = $request->nearest_station; 4 $keyword_budget = $request->budget; 5 $keyword_equality = $request->equality; 6 Log::debug(dump($request)); 7 8 $query = Shop::query(); 9 10 11 DB::enableQueryLog(); 12 13 $shops = $query->get(); 14 15 Log::debug(DB::getQueryLog()); 16 17 return view('show',[ 18 'shops'=>$shops 19 ]); 20

しかし、チェックボックスにチェックを入れて検索ボタンを押下した場合でも
controllerでrequestの内容を取得した際にチェックボックスの項目が入っていません

+request: Symfony\Component\HttpFoundation\InputBag {#44 ▼ #parameters: array:6 [▼ "_token" => "3I5XKZllAwGMkCBRfxyA8OF63ZsGQaORqXIoEHz5" "_method" => "get" "shop_name" => null "nearest_station" => null "budget" => null "equality" => "0" ] }

何か記述や設定が足りていないのでしょうか?

※2件の回答をいただいたのでそれに基づいてhome.blade.phpを修正しました
requestの内容は修正後も変わっていません

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

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

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

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

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

guest

回答3

0

自己解決

マルチ認証を実装したいので
multi-authプロジェクトに作り直してみます

投稿2022/04/12 12:57

ttpk

総合スコア338

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

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

ttpk

2022/04/25 14:10

作り直す過程でhtmlファイルのinputタグでnameを書く前に全角スペースが入っていることに気づきました。 お恥ずかしい。。。
guest

0

input要素のname属性が同じものでグループ化されるので、
今name属性に詰めている文字列をvalue属性の方に詰めて、
name属性には「目的」や「食べたいモノ」の英単語でも詰め直せば良いかと。
参考:
複数チェックボックスの扱い

投稿2022/04/11 00:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ttpk

2022/04/11 12:00

回答ありがとうございます。 name属性の文字列をvalue属性に移しました
guest

0

おそらくcheckboxの使い方が間違っています。

参考)
https://code-kitchen.dev/html/input-checkbox/
nameの使い方を参考のサイトを元に修正してください。少なくともnameとvalueが同じ値が入るような使い方は意図したものにはなってないと思います。下の方の使い方も根本的に間違っています。nameに入ってる値を使って、$requestからデータを取り出しますが、チェックボックスのデータを取り出してる形跡が見受けられません。

参考)
https://teratail.com/questions/356348
同じような悩みを抱えてる方も過去にいましたので、こちらも参考にしてください。

この一つ前にした方の質問に書いてあるソースコードの方がまだやろうとしてることはまともに見えます。自己解決で書いてる方法はおそらく間違ってる方向に進んでいると思います。

投稿2022/04/10 17:04

AbeTakashi

総合スコア4537

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

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

ttpk

2022/04/11 12:03

一つ前の質問も確認していただきありがとうございます。 リンクを貼っていただいた質問をもとに nameの部分を配列にしましたがうまくいかず、今回の質問を作成しました。 name属性を配列にする実装に戻し、home.blade.phpを修正しましたが、 requestの内容に変化はありませんでした。
AbeTakashi

2022/04/11 13:32

Controllerで$request->useや$request->foodがありませんので、テンプレートで修正した箇所のデータを取得しているように見えませんが、それは意図したことでしょうか? もしくは$requestの中を直接覗いてもデータが存在しないのであれば、route.phpが間違ってるのかもしれません。何にせよ、回答で掲示したサイトやLaravelのドキュメントを一からしっかり読み込んで、間違ってそうな箇所を探し出してみてください。
ttpk

2022/04/11 14:47

ありがとうございます Log::debug(dump($request)); をcontrollerに記入してrequestの中身を調べていますが チェックボックスにチェックを入れて送信しても useとfoodの項目がありません。 route.phpを確認してみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問