カスタムビューがあり、一部の関数ではpaginate
を使用しました。その他の関数はpaginate
を使用していません。 paginate
を使用したかどうかを確認するにはどうすればよいですか?
@if($products->links())
{{$products->links()}}
@endif // not work
もちろん、変数をtrue falseとして使用してチェックできることはわかっていますが、チェックするネイティブ関数はありますか?
これは完全に機能します。 $products
がIlluminate\Pagination\LengthAwarePaginator
のインスタンスであるかどうかを確認してから、ページネーションリンクを表示します。
@if($products instanceof \Illuminate\Pagination\LengthAwarePaginator )
{{$products->links()}}
@endif
@if ($threads->hasPages())
{{ $threads->links() }}
@endif
シンプルなもの!
このようにしてみてください
@if($products instanceof \Illuminate\Pagination\AbstractPaginator)
{{$products->links()}}
@endif
$products
がIlluminate\Pagination\AbstractPaginator
のインスタンスであるかどうかを確認する必要があります。配列またはLaravelのCollection
にすることもできます。
修正されたコード(「isset」を追加):
@if(isset($products->links()))
{{$products->links()}}
@endif
短いバージョン:
{{$products->links() ?? ''}}
これは、ページネーション、simplePaginate、およびページネーションがない場合に機能します。 「$ products-> hasMorePages()」を使用したソリューションでは、最後のページにページネーションリンクが表示されません。
モデルにlinks
メソッドが存在するかどうかを確認することもできます。
@if( method_exists($vehicles,'links') )
{{ $vehicles ->links() }}
@endif
別の方法:
@if (class_basename($products) !== 'Collection')
{{ $products->links() }}
@endif
PHP function:get_class($ products)-で完全なクラス名を取得できます。Laravelチェックする関数が必要です-> paginate()が含まれています使用する。
paginate(0)
の代わりにget()
と書くだけです{{$products->links}}
を使用するだけです。 @if @endif
は必要ありません。