Laravelで検索画面実装(検索画面と検索結果画面の表示)
PHP(Laravel)で検索画面の実装中です。
web.phpでルートを設定してあるのに、viewが404です。
Route::get('search', 'SearchController@form')->name('search.form'); Route::get('search/result', 'SearchController@result')->name('search.result');
SearchController.php
public function form() { return view('search.form'); } public function result(Request $request) { // キーワード受け取り $keyword = $request->input('keyword'); // クエリ生成 $query = Post::query(); // もしキーワードがあったら if(!empty($keyword)){ $query->where('content','like','%'.$keyword.'%'); } // ページネーション $posts = $query->orderBy('created_at','desc')->paginate(10); return view('search.result',[ 'posts' => $posts, 'keyword' => $keyword ]); }
search/form.blade.php
@extends('layouts.app') @section('content') <div class="container-fluid"> <div class="row"> <!--↓↓ 検索フォーム ↓↓--> <div class="col-sm-4" style="padding:20px 0;"> <form class="form-inline" action="{{ route('search.result') }}" method="get"> <div class="form-group"> <input type="text" name="keyword" value="{{$keyword}}" class="form-control" placeholder="keywordを入力してください"> </div> <input type="submit" value="検索" class="btn btn-info"> </form> </div> <!--↑↑ 検索フォーム ↑↑--> </div><!--/.row--> </div><!--/.container-fluid--> @endsection
search/result.blade.php
<ul class="list-unstyled"> @foreach ($posts as $post) <li class="media mb-3"> {{-- 投稿の所有者のメールアドレスをもとにGravatarを取得して表示 --}} <img class="mr-2 rounded" src="{{ Gravatar::get($post->user->email, ['size' => 50]) }}" alt=""> <div class="media-body"> <div> {{-- 投稿の所有者のユーザ詳細ページへのリンク --}} {!! link_to_route('users.show', $post->user->name, ['user' => $post->user->id]) !!} <span class="text-muted">posted at {{ $post->created_at }}</span> </div> <div> {{-- 投稿内容 --}} <p class="mb-0">{!! nl2br(e($post->content)) !!}</p> </div> <div> {{-- お気に入りボタン --}} @include('post_like.like_button') </div> <div> @if (Auth::id() == $post->user_id) {{-- 投稿削除ボタンのフォーム --}} {!! Form::open(['route' => ['posts.destroy', $post->id], 'method' => 'delete']) !!} {!! Form::submit('Delete', ['class' => 'btn btn-danger btn-sm']) !!} {!! Form::close() !!} @endif </div> </div> </li> @endforeach </ul>
試したこと
ルートの確認
補足情報(FW/ツールのバージョンなど)
Laravel6.0
初心者で分からないことが多く検索しながらやっています。
どなたかご教示いただけないでしょうか。
あなたの回答
tips
プレビュー