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

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

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

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

PHP

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

Q&A

0回答

1655閲覧

Laravelで検索画面実装

kayogarden2929

総合スコア0

Laravel

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

PHP

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

0グッド

0クリップ

投稿2020/08/08 21:04

編集2020/08/08 21:07

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

初心者で分からないことが多く検索しながらやっています。
どなたかご教示いただけないでしょうか。

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

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

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

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

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

m.ts10806

2020/08/08 21:14

>viewが404です。 404はあくまでリクエストを受けとる先がない時の話では? エラーメッセージは略さず要約せずそのまま提示してください。
kayogarden2929

2020/08/09 07:45

説明不足でもうしわけありません。。 リクエストを受けとるviewの作成をしましたが、 .amazonaws.com/search/result では一覧表示はできるようになり、 .amazonaws.com/searchを見ると ``` Undefined variable: request -------------------------------------- app/Http/Controllers/SearchController.php:18 -------------------------------------- // キーワード受け取りのところ $keyword = $request->input('keyword'); ``` .amazonaws.com//search/form は 404でエラーメッセージは出ない状態です。 $keywordを使用していないエラーとなっているようです。。
kayogarden2929

2020/08/09 17:35

SearchController.phpを public function form(Request $request) { // キーワード受け取り $keyword = $request->input('keyword'); // クエリ生成 $query = Post::query(); // もしキーワードがあったら if(!empty($keyword)){ $query->where('content','like','%'.$keyword.'%'); } return view('search.form',[ 'keyword' => $keyword ]); } search/result.blade.phpを、 @extends('layouts.app') @section('content') {{-- 投稿一覧 --}} @include('posts.list') <ul class="list-unstyled" style="max-width: 600px; text-align: left; padding:10px;"> @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.profile', $post->user->name, ['id' => $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 btn-block mt-1']) !!} {!! Form::close() !!} @endif </div> </div> </li> @endforeach </ul> <div class="col-sm-8" style="text-align:right;"> <div class="paginate"> {{ $posts->appends(Request::only('keyword'))->links() }} </div> </div> @endsection と変更したところ動くようになりました。。
m.ts10806

2020/08/09 20:30

質問は編集できますので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問