如何在laravel 5中使用分页?
How to use pagination in laravel 5?
我正在尝试将我的 laravel4 应用程序移植到 laravel 5。在以前的版本中,我可以使用以下方法生成分页 url。
在控制器中:
$this->data['pages']= Page::whereIn('area_id', $suburbs)->where('score','>','0')->orderBy('score','desc')->paginate(12);
在与视图共享数据数组后,我可以用户
观看次数 :
{{$pages->links()}}
在laravel 5中,这样做会导致以下错误
ErrorException in AbstractPaginator.php line 445:
call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Support\Collection' does not have a method 'links'
不确定我在这里遗漏了什么,有人可以帮忙吗?
在Laravel 5中没有方法"links"你可以试试这个
{!! $pages->render() !!}
你好,这是我的分页代码:
在视图中使用:
@include('pagination.default', ['paginator' => $users])
Views/pagination/default.blade.php
@if ($paginator->lastPage() > 1)
<ul class="pagination">
<!-- si la pagina actual es distinto a 1 y hay mas de 5 hojas muestro el boton de 1era hoja -->
<!-- if actual page is not equals 1, and there is more than 5 pages then I show first page button -->
@if ($paginator->currentPage() != 1 && $paginator->lastPage() >= 5)
<li>
<a href="{{ $paginator->url($paginator->url(1)) }}" >
<<
</a>
</li>
@endif
<!-- si la pagina actual es distinto a 1 muestra el boton de atras -->
@if($paginator->currentPage() != 1)
<li>
<a href="{{ $paginator->url($paginator->currentPage()-1) }}" >
<
</a>
</li>
@endif
<!-- dibuja las hojas... Tomando un rango de 5 hojas, siempre que puede muestra 2 hojas hacia atras y 2 hacia adelante -->
<!-- I draw the pages... I show 2 pages back and 2 pages forward -->
@for($i = max($paginator->currentPage()-2, 1); $i <= min(max($paginator->currentPage()-2, 1)+4,$paginator->lastPage()); $i++)
<li class="{{ ($paginator->currentPage() == $i) ? ' active' : '' }}">
<a href="{{ $paginator->url($i) }}">{{ $i }}</a>
</li>
@endfor
<!-- si la pagina actual es distinto a la ultima muestra el boton de adelante -->
<!-- if actual page is not equal last page then I show the forward button-->
@if ($paginator->currentPage() != $paginator->lastPage())
<li>
<a href="{{ $paginator->url($paginator->currentPage()+1) }}" >
>
</a>
</li>
@endif
<!-- si la pagina actual es distinto a la ultima y hay mas de 5 hojas muestra el boton de ultima hoja -->
<!-- if actual page is not equal last page, and there is more than 5 pages then I show last page button -->
@if ($paginator->currentPage() != $paginator->lastPage() && $paginator->lastPage() >= 5)
<li>
<a href="{{ $paginator->url($paginator->lastPage()) }}" >
>>
</a>
</li>
@endif
</ul>
@endif
在其他框架中,分页可能会非常痛苦。 Laravel 5 轻而易举。要使用它,首先您必须更改从数据库调用数据的控制器代码:
public function index()
{
$users = DB::table('books')->simplePaginate(5);
//using pagination method
return view('index', ['users' => $users]);
}
...之后您可以使用此代码:
<?php echo $users->render(); ?>
那会让你用的简单Laravel 5美
@if ($posts->lastPage() > 1)
<nav aria-label="Page navigation">
<ul class="pagination">
@if($posts->currentPage() != 1 && $posts->lastPage() >= 5)
<li>
<a href="{{ $posts->url($posts->url(1)) }}" aria-label="Previous">
<span aria-hidden="true">First</span>
</a>
</li>
@endif
@if($posts->currentPage() != 1)
<li>
<a href="{{ $posts->url($posts->currentPage()-1) }}" aria-label="Previous">
<span aria-hidden="true"><</span>
</a>
</li>
@endif
@for($i = max($posts->currentPage()-2, 1); $i <= min(max($posts->currentPage()-2, 1)+4,$posts->lastPage()); $i++)
@if($posts->currentPage() == $i)
<li class="active">
@else
<li>
@endif
<a href="{{ $posts->url($i) }}">{{ $i }}</a>
</li>
@endfor
@if ($posts->currentPage() != $posts->lastPage())
<li>
<a href="{{ $posts->url($posts->currentPage()+1) }}" aria-label="Next">
<span aria-hidden="true">></span>
</a>
</li>
@endif
@if ($posts->currentPage() != $posts->lastPage() && $posts->lastPage() >= 5)
<li>
<a href="{{ $posts->url($posts->lastPage()) }}" aria-label="Next">
<span aria-hidden="true">Last</span>
</a>
</li>
@endif
</ul>
</nav>
@endif
分页Laravel 5.6.26,
对于分页,控制器是:
控制器代码(https://laravel.com/docs/5.6/pagination#basic-usage)
posts = Post::orderBy('created_at','desc')->paginate(10);
return view('posts.index')->with('posts', $posts);
前端进入blade(查看)(https://laravel.com/docs/5.6/pagination#displaying-pagination-results)
{{ $users->links() }}
$items = SomeDataModel->get()->paginate(2); // in your controller
@foreach(items as $item) // in your view.blade file
....echo some data here
@endforeach
<div class="pagination">
{{ $items->render() }} or {{ $items->links() }}
</div>
在 render() 或 links() 方法中使用数组名称(项)而不是数组项。它对我有用。
使用
$users = User::where('id', Auth::user()->id)->simplePaginate(20);
并在 blade
中使用
{!! $users->render() !!}
分页和简单代码的最佳方式
$limit = 10;
$page_no = ($request->input('**page_no**') * $limit) - $limit;
$data = User::whereraw($whereraw)
->limit(**$limit**)
->offset(**$page_no**)
->get();
我正在尝试将我的 laravel4 应用程序移植到 laravel 5。在以前的版本中,我可以使用以下方法生成分页 url。
在控制器中:
$this->data['pages']= Page::whereIn('area_id', $suburbs)->where('score','>','0')->orderBy('score','desc')->paginate(12);
在与视图共享数据数组后,我可以用户
观看次数 :
{{$pages->links()}}
在laravel 5中,这样做会导致以下错误
ErrorException in AbstractPaginator.php line 445:
call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Support\Collection' does not have a method 'links'
不确定我在这里遗漏了什么,有人可以帮忙吗?
在Laravel 5中没有方法"links"你可以试试这个
{!! $pages->render() !!}
你好,这是我的分页代码:
在视图中使用:
@include('pagination.default', ['paginator' => $users])
Views/pagination/default.blade.php
@if ($paginator->lastPage() > 1)
<ul class="pagination">
<!-- si la pagina actual es distinto a 1 y hay mas de 5 hojas muestro el boton de 1era hoja -->
<!-- if actual page is not equals 1, and there is more than 5 pages then I show first page button -->
@if ($paginator->currentPage() != 1 && $paginator->lastPage() >= 5)
<li>
<a href="{{ $paginator->url($paginator->url(1)) }}" >
<<
</a>
</li>
@endif
<!-- si la pagina actual es distinto a 1 muestra el boton de atras -->
@if($paginator->currentPage() != 1)
<li>
<a href="{{ $paginator->url($paginator->currentPage()-1) }}" >
<
</a>
</li>
@endif
<!-- dibuja las hojas... Tomando un rango de 5 hojas, siempre que puede muestra 2 hojas hacia atras y 2 hacia adelante -->
<!-- I draw the pages... I show 2 pages back and 2 pages forward -->
@for($i = max($paginator->currentPage()-2, 1); $i <= min(max($paginator->currentPage()-2, 1)+4,$paginator->lastPage()); $i++)
<li class="{{ ($paginator->currentPage() == $i) ? ' active' : '' }}">
<a href="{{ $paginator->url($i) }}">{{ $i }}</a>
</li>
@endfor
<!-- si la pagina actual es distinto a la ultima muestra el boton de adelante -->
<!-- if actual page is not equal last page then I show the forward button-->
@if ($paginator->currentPage() != $paginator->lastPage())
<li>
<a href="{{ $paginator->url($paginator->currentPage()+1) }}" >
>
</a>
</li>
@endif
<!-- si la pagina actual es distinto a la ultima y hay mas de 5 hojas muestra el boton de ultima hoja -->
<!-- if actual page is not equal last page, and there is more than 5 pages then I show last page button -->
@if ($paginator->currentPage() != $paginator->lastPage() && $paginator->lastPage() >= 5)
<li>
<a href="{{ $paginator->url($paginator->lastPage()) }}" >
>>
</a>
</li>
@endif
</ul>
@endif
在其他框架中,分页可能会非常痛苦。 Laravel 5 轻而易举。要使用它,首先您必须更改从数据库调用数据的控制器代码:
public function index()
{
$users = DB::table('books')->simplePaginate(5);
//using pagination method
return view('index', ['users' => $users]);
}
...之后您可以使用此代码:
<?php echo $users->render(); ?>
那会让你用的简单Laravel 5美
@if ($posts->lastPage() > 1)
<nav aria-label="Page navigation">
<ul class="pagination">
@if($posts->currentPage() != 1 && $posts->lastPage() >= 5)
<li>
<a href="{{ $posts->url($posts->url(1)) }}" aria-label="Previous">
<span aria-hidden="true">First</span>
</a>
</li>
@endif
@if($posts->currentPage() != 1)
<li>
<a href="{{ $posts->url($posts->currentPage()-1) }}" aria-label="Previous">
<span aria-hidden="true"><</span>
</a>
</li>
@endif
@for($i = max($posts->currentPage()-2, 1); $i <= min(max($posts->currentPage()-2, 1)+4,$posts->lastPage()); $i++)
@if($posts->currentPage() == $i)
<li class="active">
@else
<li>
@endif
<a href="{{ $posts->url($i) }}">{{ $i }}</a>
</li>
@endfor
@if ($posts->currentPage() != $posts->lastPage())
<li>
<a href="{{ $posts->url($posts->currentPage()+1) }}" aria-label="Next">
<span aria-hidden="true">></span>
</a>
</li>
@endif
@if ($posts->currentPage() != $posts->lastPage() && $posts->lastPage() >= 5)
<li>
<a href="{{ $posts->url($posts->lastPage()) }}" aria-label="Next">
<span aria-hidden="true">Last</span>
</a>
</li>
@endif
</ul>
</nav>
@endif
分页Laravel 5.6.26, 对于分页,控制器是:
控制器代码(https://laravel.com/docs/5.6/pagination#basic-usage)
posts = Post::orderBy('created_at','desc')->paginate(10);
return view('posts.index')->with('posts', $posts);
前端进入blade(查看)(https://laravel.com/docs/5.6/pagination#displaying-pagination-results)
{{ $users->links() }}
$items = SomeDataModel->get()->paginate(2); // in your controller
@foreach(items as $item) // in your view.blade file
....echo some data here
@endforeach
<div class="pagination">
{{ $items->render() }} or {{ $items->links() }}
</div>
在 render() 或 links() 方法中使用数组名称(项)而不是数组项。它对我有用。
使用
$users = User::where('id', Auth::user()->id)->simplePaginate(20);
并在 blade
中使用{!! $users->render() !!}
分页和简单代码的最佳方式
$limit = 10;
$page_no = ($request->input('**page_no**') * $limit) - $limit;
$data = User::whereraw($whereraw)
->limit(**$limit**)
->offset(**$page_no**)
->get();