如何检查是不是在laravel中使用了分页
Posted
技术标签:
【中文标题】如何检查是不是在laravel中使用了分页【英文标题】:How to check if used paginate in laravel如何检查是否在laravel中使用了分页 【发布时间】:2017-02-20 00:36:24 【问题描述】:我有一个自定义视图,在某些功能中,我使用了paginate
,而其他功能我不使用paginate
。现在如何检查我是否使用了paginate
?
@if($products->links())
$products->links()
@endif // not work
当然我知道我可以使用一个变量作为 true false 来检查它,但是有任何本地函数来检查它吗?
【问题讨论】:
你能试试这个吗?!! $products->links() !!
【参考方案1】:
这非常有效。检查$products
是否是Illuminate\Pagination\LengthAwarePaginator
的实例,然后显示分页链接。
@if($products instanceof \Illuminate\Pagination\LengthAwarePaginator )
$products->links()
@endif
【讨论】:
最好的方法是$products->hasMorePages() 请记住,长度感知分页器与简单分页器不同(不计算总页数)。为此,请检查\Illuminate\Pagination\Paginator
的实例。两者都扩展\Illuminate\Pagination\AbstractPaginator
,以便可以用来捕获任何一个。【参考方案2】:
@if ($threads->hasPages())
$threads->links()
@endif
简单的一个!
【讨论】:
我将分页链接放在一个容器中,但有时没有足够的结果来生成页面。这解决了它!【参考方案3】:这样试试
@if($products instanceof \Illuminate\Pagination\AbstractPaginator)
$products->links()
@endif
您需要检查$products
是Illuminate\Pagination\AbstractPaginator
的实例。它可以是一个数组,也可以是 Laravel 的 Collection
。
【讨论】:
我收到一个错误Parse error: syntax error, unexpected 'class' (T_CLASS), expecting variable (T_VARIABLE) or '$'
你的php版本是什么?
我正在使用 Laravel Homestead。 PHP 版本 7.0.2-4+deb.sury.org~trusty+1
嗯...这很奇怪。您可以尝试:'Illuminate\Pagination\Paginator' 而不是 \Illuminate\Pagination\Paginator::class
,但 PHP 版本允许这样做。也许你在其他地方得到了这个错误?
现在收到错误Parse error: syntax error, unexpected '''' (T_CONSTANT_ENCAPSED_STRING)
。【参考方案4】:
美丽的方式:
@if ($products->hasMorePages())
$products->links()
@endif
Click here to see the official documentation
【讨论】:
最后一页会隐藏分页链接【参考方案5】:从 laravel 7 开始,您现在可以这样做:
@if( $vehicles->hasPages() )
$vehicles->links()
@endif
【讨论】:
【参考方案6】:不要对变量的基类进行检查。这可能会导致在未来的 Laravel 版本中更改基类出现问题。只需检查方法链接是否存在:
@if(method_exists($products, 'links'))
$products->links()
@endif
【讨论】:
【参考方案7】:更正的代码(添加“isset”):
@if(isset($products->links()))
$products->links()
@endif
短版:
$products->links() ?? ''
它适用于 paginate、simplePaginate 和没有分页的情况。带有“$products->hasMorePages()”的解决方案不会在最后一页显示分页链接。
【讨论】:
6 在你之前回答...解释为什么使用你的...而不是其他人。【参考方案8】:另一种方式:
@if (class_basename($products) !== 'Collection')
$products->links()
@endif
您可以使用 PHP 函数:get_class($products) - 获取完整的类名。 Laravel 应该有一些功能来检查 ->paginate() 是否正在使用。
【讨论】:
【参考方案9】: 只写paginate(0)
而不是get()
刀片模板:只需使用$products->links
。不需要@if @endif
。
【讨论】:
【参考方案10】:laravel 分页有 2 种类型:
simplePaginate() 将返回 \Illuminate\Pagination\Paginator paginate() 将返回 Illuminate\Pagination\LengthAwarePaginator基于以上情况,你可以试试这个解决方案:
@if(
$products instanceof \Illuminate\Pagination\Paginator ||
$products instanceof Illuminate\Pagination\LengthAwarePaginator
)
$products->links()
@endif
【讨论】:
【参考方案11】:请使用以下格式
@if($products instanceof \Illuminate\Pagination\LengthAwarePaginator )
$products->links()
@endif
【讨论】:
【参考方案12】:@if($products->currentPage() > 1)
$products->links()
@endif
【讨论】:
虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。以上是关于如何检查是不是在laravel中使用了分页的主要内容,如果未能解决你的问题,请参考以下文章