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

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

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

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

Q&A

1回答

1094閲覧

Laravel で検索機能を作成したい

taiyoo

総合スコア1

Laravel

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

0グッド

0クリップ

投稿2021/07/25 05:39

前提・実現したいこと

検索に対して部分一致した場合、データを取得できるようにしたい

ここに質問の内容を詳しく書いてください。
Laravelにて検索機能を作成しております。
イメージとしてはリンクの通りです。
検索イメージ
Git

上記のようにsearchメソッドを活用して部分一致でデータを取得しようとしております。
しかし、検索欄に文字を入力しても、検索がかかってくれない状況。
かつ検索ボタンを押した時に別ページに変遷してしまいます。

発生している問題・エラーメッセージ

検索欄に文字を入力しても、検索がかかってくれない状況。
かつ検索ボタンを押した時に別ページに変遷してしまいます。

The POST method is not supported for this route. Supported methods: GET, HEAD.

該当のソースコード

Laravel

1//管理システム 2Route::get('/host', [ContactController::class, 'host'])->name('host'); 3 4 5Route::post('/host/search', [ContactController::class, 'search'])->name('host.search'); 6Route::post('/host/create', [ContactController::class, 'create'])->name('create'); 7Route::post('/host/delete',[ContactController::class,'delete'])->name('delete');

Laravel

1<h1>管理システム</h1> 2 @if(count($errors)>0) 3 <ul> 4 @foreach($errors->all() as $error) 5 <li> 6 {{$error}} 7 </li> 8 @endforeach 9 </ul> 10 @endif 11 <table> 12 <form method="post" action="host"> 13 <tr> 14 <th>お名前</th> 15 <td><input type="text" name="fullname" value="{{request('search')}}"></td> 16 17 <th>性別</th> 18 <td> 19 <input type="radio" name="gender" value="全て{{request('search')}}" />全て 20 <input type="radio" name="gender" value="男性{{request('search')}}" />男性 21 <input type="radio" name="gender" value="女性{{request('search')}}" />女性 22 </td> 23 </tr> 24 <tr> 25 <th>登録日</th> 26 <td><input type="text" name="date" value="{{request('search')}}"></td> 27 <td>-</td> 28 <td><input type="text" name="date" value="{{request('search')}}"></td> 29 </tr> 30 <tr> 31 <th>メールアドレス</th> 32 <td><input type="text" name="email" value="{{request('search')}}"></td> 33 </tr> 34 </table> 35 <button>検索</button> 36 <a href="/host">リセット</a> 37  </form>

Laravel

1public function host(Request $request) 2 { 3 $items = Contact::Paginate(10); 4 return view('host',['items' => $items]); 5 } 6 public function find() 7 { 8 return view('find',['input' => '']); 9 } 10 public function search(Request $request){ 11 $item = Contact::where('name','LIKE',"%{$request->input}%")->get(); 12 $item = Contact::where('date','LIKE',"%{$request->input}%")->get(); 13 $item = Contact::where('gender','LIKE',"%{$request->input}%")->get(); 14 $item = Contact::where('email','LIKE',"%{$request->input}%")->get(); 15 $param = [ 16 'input' => $request->input, 17 'item' => $item 18 ]; 19 return view('find',$param); 20 }

試したこと

エラーメッセージにgetで指定してください。というメッセージがあったため、post->getに変更してみた。
コントローラーのfindが不要ではないかと仮定して、findがない方法でもできないかを模索してみた。
コントローラのsearchが{{request->input}}となっているため、hostのitemsをinputに変更してみた。

補足情報(FW/ツールのバージョンなど)

調べたこと・参考にしたページ
Laravelのリファレンス
Laravelでの検索機能の実装例
実装例1
実装例2

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

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

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

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

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

guest

回答1

0

とりあえずHTMLが文法的におかしいです。

HTML

1 <table> 2 <form method="post" action="host"> 3```↓ 4```HTML 5 <form method="post" action="host"> 6 <table>

投稿2021/07/25 05:41

kei344

総合スコア69458

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

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

taiyoo

2021/07/25 06:05 編集

ご回答誠にありがとうございます。 修正いたしました。 その他おかしな点がございましたら、ご指摘頂けますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問