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

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

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

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

Q&A

解決済

1回答

1453閲覧

laravel5.4 paginateの2ページ目以降が表示されない

kotakeshi0923

総合スコア28

Laravel 5

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

0グッド

0クリップ

投稿2017/09/22 08:21

編集2017/09/23 01:33

現在、laravel5.4で、VIEWで検索条件を設定し、その内容をsubmitでcontrollerによみこみ、
その条件でSQLを発行・取得した情報を、再度viewへ返して表示する処理を行っています。
paginateを使用した検索結果を出力できていたのですが、paginate処理の前に簡単な分岐ロジックを入れただけで、paginateの2ページ目以降をクリックするとブラウザーが完全に真っ白表示となってしまいviewが表示されなくなりました。

ブラウザーでデバッグしたところ、htmlヘッダが2ページ目以降なくなっていました。
なぜ、分岐ロジックを入れただけでこのような動きになるのか理解できません。

以下のように所得してくるrequestのsearchに値があるかどうかを確認しているだけです。
この処理を外すと、htmlヘッダーが削除されず正常にpaginateオブジェクトが動いてくれます。

php

1public function searchroute(Request $request) 2 { 3 if ($request->get('search')) 4 { 5 $year=$request->get('year'); 6 $month=$request->get('month'); 7 $years = $year.$month; 8 $opname = $request->get('op_name'); 9 $account_code = $request->get('account_code'); 10 $item_name = $request->get('item_name'); 11 $customer_name = $request->get('customer_name'); 12 $depreciation = $request->get('depreciation'); 13 $achievement = $request->get('achievement'); 14 $concatenation = $request->get('concatenation'); 15 $collection = $request->get('collection'); 16 17 $search = DB::table('contents')->select()->join('contents_detail','contents_detail.ctnts_code',"=","contents.ctnts_code") 18 ->where('contents_detail.target_date',$years) 19 ->where('contents.op_name','like','%'.$opname.'%') 20 ->where('contents.acnt_code','like','%'.$account_code.'%') 21 ->where('contents.item_name','like','%'.$item_name.'%') 22 ->where('contents.customer_name','like','%'.$customer_name.'%') 23 ->whereIn('contents_detail.dprctn_kbn',$depreciation) 24 ->whereIn('contents_detail.achieve_kbn',$achievement) 25 ->whereIn('contents_detail.conct_kbn',$concatenation) 26 ->Paginate(15); 27 28 return view('contents.contentssearch') 29 ->with(['search'=>$search,'year'=>$year,'month'=>$month,'depreciation'=>$depreciation,'achievement' 30 =>$achievement,'concatenation'=>$concatenation]); 31 32 } 33 elseif ($request->get('downloadcsv')) 34 { 35 echo "test"; 36 } 37 }

ご教授いただけますと幸いです。

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

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

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

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

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

fagai

2017/09/22 09:54

流石にその分岐のはじめの箇所だけ見せられてもわからないので、そのメソッドの全体を載せてくれませんか?
kotakeshi0923

2017/09/23 00:57

全体を記載致しました。よろしくお願いいたします。
fagai

2017/09/23 01:16

記載されていないようですが・・・。ソースコードは```で囲って載せていただければと思います。
kotakeshi0923

2017/09/23 01:34

失礼しました。記載致しましたのでご確認の程よろしくお願いいたします。
guest

回答1

0

ベストアンサー

まず真っ白になっているのは、どちらの分岐も通ってないからでしょう。

elseif ($request->get('downloadcsv')) { echo "test"; } // 以下追加 echo "test2";

などと追記したらtest2が帰ってくると思います。

もう一つ確認すると、$request->get('search')でsearchというキーを取得していますがこれはページ遷移時もちゃんと受け継がれていますか?

現在のクエリを取得するのはRequest::query()またはrequest()->query()で取得できます。
paginateリンクに前のクエリを渡していないなら

$search->appends(Request::query())->links();

などとすると良いかもしれません。

投稿2017/09/23 01:49

編集2017/09/23 01:51
fagai

総合スコア2158

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

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

kotakeshi0923

2017/09/23 02:24

ご指摘通り、2ページ目は分岐を通っていませんでした。 {!! $search->appends(Request::query())->links(); !!} に変更することで2ページ目も表示されるようになりました。 ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問