前提・実現したいこと
検索に対して部分一致した場合、データを取得できるようにしたい
ここに質問の内容を詳しく書いてください。
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に変更してみた。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/25 06:05 編集