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

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

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

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

4592閲覧

laravel ページネーション実装時に発生するエラーについて。

starororo

総合スコア14

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/06/13 09:26

編集2018/06/14 05:38

こちらの本の説明に沿い、載っている本管理アプリを制作していた際に発生したエラーについての質問です。

ページネーションを実装するためにコントローラにpaginateを、対応するビューに{{ $books->links()}}を各々記述しました。

イメージ説明
その後、実際にブラウザ上で表示しようと試みると上の画像のようなエラーが発生します。

ダウンロードしたサンプルコードを使用しても同様のエラーが生じました。

エラー文から推測し、調べて試行錯誤してみたのですが解決できませんでした。

BooksController.phpにpaginateを記述した時点ではエラーは発生致しません。
books.blade.phpに{{ $books->links()}}を記述するとエラーが発生します。

ご指摘よろしくお願いします。

以下に該当箇所と思われるコード。

php

1<?php 2 3BooksController.php 4 5namespace App\Http\Controllers; 6 7use Illuminate\Http\Request; 8use App\Http\Controllers; 9use App\Book; 10use Validator; 11 12class BooksController extends Controller 13{ 14 //index 15 public function index() 16 { 17 $books = Book::orderBy('created_at', 'asc')->paginate(3); 18 return view('books', [ 19 'books' => $books 20 ]); 21 } 22 23 //edit 24 public function edit(Book $books) 25 { 26 return view('booksedit', [ 27 'book' => $books 28 ]); 29 } 30 31 //update 32 public function update(Request $request) 33 { 34 //バリデーション 35 $validator = Validator::make($request->all(), [ 36 'id' => 'required', 37 'item_name' => 'required|min:3|max:255', 38 'item_number' => 'required|min:1|max:3', 39 'item_amount' => 'required|max:6', 40 'published' => 'required', 41 ]); 42 //バリデーション:エラー 43 if ($validator->fails()) { 44 return redirect('/') 45 ->withInput() 46 ->withErrors($validator); 47 } 48 //データ更新 49 $books = Book::find($request->id); 50 $books->item_name = $request->item_name; 51 $books->item_number = $request->item_number; 52 $books->item_amount = $request->item_amount; 53 $books->published = $request->published; 54 $books->save(); 55 return redirect('/'); 56 } 57 58 //registration 59 public function store(Request $request) 60 { 61 //バリデーション 62 $validator = Validator::make($request->all(), [ 63 'item_name' => 'required|min:3|max:255', 64 'item_number' => 'required | min:1 | max:3', 65 'item_amount' => 'required | max:6', 66 'published' => 'required', 67 ]); 68 //バリデーション:エラー 69 if ($validator->fails()) { 70 return redirect('/') 71 ->withInput() 72 ->withErrors($validator); 73 } 74 // Eloquent モデル 75 $books = new Book; 76 $books->item_name = $request->item_name; 77 $books->item_number = $request->item_number; 78 $books->item_amount = $request->item_amount; 79 $books->published = $request->published; 80 $books->save(); //「/」ルートにリダイレクト 81 return redirect('/'); 82 } 83 //delete 84 public function destroy(Book $book) 85 { 86 $book->delete(); 87 return redirect('/'); 88 } 89} 90

php

1books.blade.php 2 3@extends('layouts.app') 4 5@section('content') 6 7 <!-- Bootstrapの定形コード… --> 8 <div class="panel-body"> 9 <!-- バリデーションエラーの表示 --> 10 @include('common.errors') 11 <!-- バリデーションエラーの表示 --> 12 13 <!-- 本登録フォーム --> 14 <form action="{{ url('books') }}" method="POST" class="form-horizontal"> 15 16 {{ csrf_field() }} 17 18 <!-- 本のタイトル --> 19 <div class="form-group"> 20 21 <div class="col-sm-6"> 22 <label for="book" class="col-sm-3 control-label">Book</label> 23 <input type="text" name="item_name" id="book-name" class="form-control"> 24 </div> 25 26 <div class="col-sm-6"> 27 <label for="amount" class="col-sm-3 control-label">金額</label> 28 <input type="text" name="item_amount" id="book-amount" class="form-control"> 29 </div> 30 31 <div class="col-sm-6"> 32 <label for="number" class="col-sm-3 control-label"></label> 33 <input type="text" name="item_number" id="book-number" class="form-control"> 34 </div> 35 36 <div class="col-sm-6"> 37 <label for="published" class="col-sm-3 control-label">公開日</label> 38 <input type="date" name="published" id="book-published" class="form-control"> 39 </div> 40 41 </div> 42 43 <!-- 本 登録ボタン --> 44 <div class="form-group"> 45 <div class="col-sm-offset-3 col-sm-6"> 46 <button type="submit" class="btn btn-default"> 47 <i class="glyphicon glyphicon-plus" aria-hidden="true"></i> Save 48 </button> 49 </div> 50 </div> 51 </form> 52 53 54 55 <!-- 現在の本 --> 56 @if (count($books) > 0) 57 <div class="panel panel-default"> 58 <div class="panel-heading"> 59 現在の本 60 </div> 61 62 <div class="panel-body"> 63 <table class="table table-striped task-table"> 64 65 <!-- テーブルヘッダ --> 66 <thead> 67 <th>本一覧</th> 68 <th>&nbsp;</th> 69 </thead> 70 71 <!-- テーブル本体 --> 72 <tbody> 73 @foreach ($books as $book) 74 <tr> 75 76 <!-- 本タイトル --> 77 <td class="table-text"> 78 <div>{{ $book->item_name }}</div> 79 </td> 80 81 <!--: 更新ボタン --> 82 <td> 83 <form action="{{ url('booksedit/'.$book->id) }}" method="POST"> 84 {{ csrf_field() }} 85 <button type="submit" class="btn btn-primary"> 86 <i class="glyphicon glyphicon-pencil"></i> 更新 87 </button> 88 </form> 89 </td> 90 91 <!--: 削除ボタン --> 92 <td> 93 <form action="{{ url('book/'.$book->id) }}" method="POST"> 94 {{ csrf_field() }} 95 {{ method_field('DELETE') }} 96 <button type="submit" class="btn btn-danger"> 97 <i class="glyphicon glyphicon-trash"></i> 削除 98 </button> 99 </form> 100 </td> 101 102 103 </tr> 104 @endforeach 105 </tbody> 106 </table> 107 </div> 108 </div> 109 @endif 110 <!-- Book: 既に登録されてる本のリスト --> 111 112 <div class="row"> 113 <div class="col-md-4 col-md-offset-4"> 114 {{ $books->links()}} 115 </div> 116 </div> 117 118 </div> 119 <!-- 本登録フォームの作成 --> 120 121@endsection 122

php

1Book.php 2 3<?php 4 5namespace App; 6 7use Illuminate\Database\Eloquent\Model; 8 9class Book extends Model 10{ 11 // 12}

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

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

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

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

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

motuo

2018/06/14 03:05

処理をコピペしましたが、正常にページネーションは動きました。(再現しませんでした)もしかしたら、Model側の定義に問題があるのかもしれません。そちらも提示してみては如何でしょうか?
starororo

2018/06/14 05:33

ご指摘有難うございます。モデルファイルのコードを追記致しました。
motuo

2018/06/14 05:54

不審なところは見当たらないですね…では、indexメソッド内のreturnの直前にdd($books);を入れて、変数の内容を提示頂けますでしょうか?
starororo

2018/06/14 09:22

エラーの原因が判明致しました。エディタ上で開いていたルート設定のファイルが別のフォルダの同名ファイルであったためでした。motuoさん、並びにエラーの原因を探してくださった皆様、本当に申し訳ございません。親身にしてくださったmotuoさん、有難うございました。個人的にはmotuoさんのご指摘のおかげで解決に導けたので、motuoさんにベストアンサーをつけたいのですが...
motuo

2018/06/14 09:32 編集

自己解決としても良い気がしますが、折角なので経緯を回答に纏めておきました。
guest

回答1

0

ベストアンサー

とりあえず経緯を残しておきます。

  1. こちらの環境で処理をコピペしましたが、正常に動きました。
  2. Model側の定義を確認するも問題なし
  3. indexメソッド内のreturnの直前にdd($books);を入れて、変数の内容を確認するように依頼

最終的に質問者さんが

エディタ上で開いていたルート設定のファイルが別のフォルダの同名ファイルであったため

という事に気付き解決しました。

投稿2018/06/14 09:31

motuo

総合スコア3027

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

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

starororo

2018/06/14 11:08

有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問