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

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

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

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

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

Q&A

解決済

1回答

718閲覧

laravelで検索ボタンを押すと画面が真っ白になってしまう

p_Laravel

総合スコア1

Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

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

0グッド

0クリップ

投稿2023/04/18 11:29

実現したいこと

laravelでブログサイトを作っています。
検索機能を追加しようと思い調べながら作っていました。
投稿一覧に検索フォームを作りその他コントローラーなどを書いたあと、動作確認のため検索ボタンを押したところ画面が真っ白になり何も表示されなくなってしまいました。原因が分からず困っています。アドバイスなどをいただけると幸いです。

前提

ルーティング、投稿一覧のindex.blade.php、検索ボタンを押したあとの遷移先のsearch.blade.php、PostController.php、Post.phpに処理などを書きました。5つのファイルをソースコードに記載します。

該当のソースコード

web.php

php

1<?php 2 3/* 4|-------------------------------------------------------------------------- 5| Web Routes 6|-------------------------------------------------------------------------- 7| 8| Here is where you can register web routes for your application. These 9| routes are loaded by the RouteServiceProvider within a group which 10| contains the "web" middleware group. Now create something great! 11| 12*/ 13 14Auth::routes(); 15 16Route::get('/', function () { 17 return redirect()->route('posts.index'); 18}); 19 20Route::resource('users', 'UserController')->only([ 21 'create', 'store','edit', 'update', 'show', 22]); 23 24Route::resource('posts', 'PostController'); 25 26Route::resource('follows', 'FollowController')->only([ 27 'index', 'store', 'destroy' 28]); 29 30Route::get('/follower', 'FollowController@followerIndex'); 31 32Route::get('/posts/search', 'PostController@search')->name('posts.search');

index.blade.php

php

1@extends('layouts.logged_in') 2 3@section('title', $title) 4 5@section('content') 6 <form action="{{ route('posts.search') }}" method="GET"> 7 @csrf 8 <input type="text" name="search_keyword"> 9 <button type="submit">検索</button> 10 </form> 11 <h2>おすすめユーザー</h2> 12 <ul class="recommend_users"> 13 @forelse($recommend_users as $recommend_user) 14 <li><a href="{{ route('users.show', $recommend_user) }}">{{ $recommend_user->name }}</a></li> 15 @empty 16 <li>他のユーザーが存在しません。</li> 17 @endforelse 18 </ul> 19 <h2>{{ $title }}</h2> 20 <ul> 21 @forelse($posts as $post) 22 <li> 23 {{ $post->user->name }}: 24 {!! nl2br($post->comment) !!}<br> 25 ({{ $post->created_at }}) 26 @if($user->isEditable($post)) 27 [<a href="{{ route('posts.edit', $post) }}">編集</a>] 28 @endif 29 @if($user->isEditable($post)) 30 <form action="{{ url('posts/'.$post->id) }}" method="post"> 31 @csrf 32 @method('delete') 33 <button type="submit">削除</button> 34 </form> 35 @endif 36 </li> 37 @empty 38 <p>投稿がありません。</p> 39 @endforelse 40 </ul> 41@endsection

search.blade.php

php

1@section('content') 2 <h2>検索結果: {{ $search_keyword }}</h2> 3 @if($posts->count() > 0) 4 <ul> 5 @foreach($posts as $post) 6 <li> 7 {{ $post->user->name }}: 8 {!! nl2br(e($post->comment)) !!}<br> 9 ({{ $post->created_at }}) 10 </li> 11 @endforeach 12 </ul> 13 @else 14 <p>該当する投稿がありません。</p> 15 @endif 16@endsection

PostController.php

php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Post; 7use App\Http\Requests\PostRequest; 8use App\User; 9 10class PostController extends Controller 11{ 12 // 投稿一覧 13 public function index(){ 14 $user = \Auth::user(); 15 $posts = $user->posts()->latest()->get(); 16 $follow_user_ids = $user->follow_users->pluck('id'); 17 $user_posts = $user->posts()->orWhereIn('user_id', $follow_user_ids )->latest()->get(); 18 return view('posts.index', [ 19 'title' => '投稿一覧', 20 'user' => $user, 21 'posts' => $user_posts, 22 'recommend_users' => User::recommend($user->id)->get(), 23 ]); 24 } 25 26 // 新規投稿フォーム 27 public function create() 28 { 29 return view('posts.create', [ 30 'title' => '新規投稿', 31 ]); 32 } 33 34 // 投稿追加処理 35 public function store(PostRequest $request){ 36 Post::create([ 37 'user_id' => \Auth::user()->id, 38 'comment' => $request->comment, 39 ]); 40 session()->flash('success', '投稿を追加しました'); 41 return redirect()->route('posts.index'); 42 } 43 44 // 投稿編集フォーム 45 public function edit($id) 46 { 47 // ルーティングパラメータで渡されたidを利用してインスタンスを取得 48 $post = Post::find($id); 49 return view('posts.edit', [ 50 'title' => '投稿編集', 51 'post' => $post, 52 ]); 53 } 54 55 // 投稿更新処理 56 public function update($id, PostRequest $request) 57 { 58 $post = Post::find($id); 59 $post->update($request->only(['comment'])); 60 session()->flash('success', '投稿を編集しました'); 61 return redirect()->route('posts.index'); 62 } 63 64 // 投稿削除処理 65 public function destroy($id) 66 { 67 $post = Post::find($id); 68 69 $post->delete(); 70 session()->flash('success', '投稿を削除しました'); 71 return redirect()->route('posts.index'); 72 } 73 74 public function __construct() 75 { 76 $this->middleware('auth'); 77 } 78 79 public function show($id) 80 { 81 $post = Post::find($id); 82 return view('posts.show', [ 83 'title' => '投稿詳細', 84 'post' => $post, 85 ]); 86 } 87 88 public function search(Request $request) 89 { 90 $keyword = $request->input('search_keyword'); 91 92 $posts = Post::where('user_id', '<>', Auth::id()) 93 ->where('comment', 'LIKE', '%'.$keyword.'%') 94 ->latest() 95 ->get(); 96 97 return view('posts.search', [ 98 'posts' => $posts, 99 'search_keyword' => $keyword, 100 ]); 101 } 102}

Post.php

php

1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6use App\Post; 7 8class Post extends Model 9{ 10 protected $fillable = ['user_id', 'comment',]; 11 12 public function user(){ 13 return $this->belongsTo('App\User'); 14 } 15 16 public function comments(){ 17 return $this->hasMany('App\Comment'); 18 } 19 20 public function scopeSearch($query, $keyword) 21 { 22 $user_id = Auth::id(); 23 return $query->where('user_id', '<>', $user_id) 24 ->where(function ($query) use ($keyword, $user_id) { 25 $query->where('comment', 'LIKE', '%'.$keyword.'%') 26 ->orWhere('created_at', 'LIKE', '%'.$keyword.'%'); 27 }) 28 ->latest(); 29 } 30}

試したこと

ルーティングの確認、真っ白になってしまう原因をネットで調べたか直接的な解決の糸口にはならなかった。

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

windows11です。
よろしくお願いします。

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

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

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

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

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

AbeTakashi

2023/04/19 02:52

まずはApacheのエラーログを参照するか、エラーメッセージが画面に表示されるように設定を変更して、具体的にどういうエラーが発生してるかを突き止めてください。その内容を見てもエラーの解決が難しい場合は、可能な限りそのエラーメッセージを質問文内に追記してください。エラーメッセージを見るのは不具合対応の最初の一歩で必ず必要です。 残念ですが「真っ白になってしまう」という表現とソースコードだけが材料だと、第三者が的確に問題を指摘するのは難しいです。
m.ts10806

2023/04/19 03:25

プログラム実行において「真っ白」は表現として適切ではなく、起きてる現象を正しく表せていません。 多くは実行継続不可能なエラー、もしくは実行次第が不可能なエラーが起きてプログラムの実行が止まってしまっていることに起因します。 フレームワークを利用する場合、相応の知識や経験を前提としているものが殆であるため、デバッグやエラーの確認方法すら身についていない状態で手を付けても時間の浪費にしかなりません。 遠回りに見えるかもしれませんが、まずは基礎からしたほうが着実に進めますし、早いです。 書いたとおりにしか動かないのがプログラムなので、なんとなく参考記事や書籍のコードだけなぞってもまともに動くものにはなりません。
p_Laravel

2023/04/23 09:17

->AbeTakashiさん ->m.ts10806さん ご指摘ありがとうございます。今後は第三者がみて分かるように詳しく記載します。 エラーの詳細、デバックなどの情報の調べ方なども身に着けて起きます。
m.ts10806

2023/04/23 12:51

質問は編集できるので、適宜調整を。
guest

回答1

0

ベストアンサー

情報が不足しているので、以下の状況であると推測しての回答になります。

  • /posts の画面は想定通り表示される
  • 検索ボタンを押すと /posts/search?search_keyword=xxxx のようなURLに遷移する
  • 遷移先の /posts/search では検索結果が表示される想定だが、何も表示されない (画面上では真っ白に見える、ソースコードの内容も空の状態である)
  • ログファイルにエラーなどは特に出力されていない

search.blade.php において継承するテンプレートファイルが指定されていません。
@extends でテンプレートが指定されていない、あるいは継承するテンプレート上に contentセクションが無い場合、
@section('content') を出力する箇所がありませんので、出力は空になると思われます。

投稿2023/04/20 17:50

Eggpan

総合スコア2727

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

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

p_Laravel

2023/04/23 09:14

ありがとうございます! 無知ですみません!おかげで解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問