如何在 Laravel 中添加手动分页
How add manual pagination in Laravel
我是 Laravel 和 php 的初学者。
我尝试使用分页显示列表文章。
我有控制器:
public function poradnik(Request $request)
{
MetaTag::set('title', 'name.pl | xxxxx');
MetaTag::set('description', 'name.pl | xxxxx');
MetaTag::set('keywords', 'name.pl | xxxxx');
$data = [
[
'title' => 'Strona Internetowa, jak Odnieść Sukces?',
'desc' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum luctus ex. Morbi sollicitudin condimentum ante, vel euismod quam rhoncus nec. Ut consectetur convallis libero, ut venenatis libero sagittis ac. Sed hendrerit risus quis luctus dignissim. Morbi tincidunt tempus enim, at volutpat leo placerat sed. Aliquam pharetra dolor faucibus, posuere lacus sit amet, venenatis nulla...',
'url' => 'poradnik-strona-internetowa-jak-odniesc-sukces'
],
[
'title' => 'Znaczenie Linków w Budowaniu Pozycji Strony',
'desc' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum luctus ex. Morbi sollicitudin condimentum ante, vel euismod quam rhoncus nec. Ut consectetur convallis libero, ut venenatis libero sagittis ac. Sed hendrerit risus quis luctus dignissim. Morbi tincidunt tempus enim, at volutpat leo placerat sed. Aliquam pharetra dolor faucibus, posuere lacus sit amet, venenatis nulla...',
'url' => 'poradnik-znaczenie-linkow-w-budowaniu-pozycji-strony'
],
[
'title' => 'Planowanie Sklepu Internetowego',
'desc' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum luctus ex. Morbi sollicitudin condimentum ante, vel euismod quam rhoncus nec. Ut consectetur convallis libero, ut venenatis libero sagittis ac. Sed hendrerit risus quis luctus dignissim. Morbi tincidunt tempus enim, at volutpat leo placerat sed. Aliquam pharetra dolor faucibus, posuere lacus sit amet, venenatis nulla...',
'url' => 'poradnik-planowanie-sklepu-internetowego'
]
.........
];
return view('frontend.poradnik.index', ['data' => $data]);
}
(243 条记录)
查看:
@foreach($data as $value)
<li class="guide-item">
<a href="{{ $value['www'] }}">
<h2>{{ $value['title'] }}</h2></a>
<a href="{{ $value['www'] }}"><p
class="justify-text">
{{ $value['desc'] }}
</p></a>
</li>
@endforeach
<nav aria-label="Page navigation">
<ul class="pagination">
<li class="page-item"><a class="page-link" href="#" aria-label="Previous"></a></li>
<li class="page-item"><a class="page-link" href="#">1</a></li>
<li class="page-item"><a class="page-link" href="#">2</a></li>
<li class="page-item"><a class="page-link" href="#">3</a></li>
<li class="page-item"><a class="page-link" href="#" aria-label="Next"></a></li>
</ul>
</nav>
如何将分页添加到我的代码中?我需要限制每页 4 条记录。我用 Laravel 6 :)
如果我理解正确的话,您需要在数组上进行分页。如果是这种情况,请查看此示例:
class PaginationController extends Controller
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function index()
{
$myArray = [
['id'=>1, 'title'=>'Laravel CRUD'],
['id'=>2, 'title'=>'Laravel Ajax CRUD'],
['id'=>3, 'title'=>'Laravel CORS Middleware'],
['id'=>4, 'title'=>'Laravel Autocomplete'],
['id'=>5, 'title'=>'Laravel Image Upload'],
['id'=>6, 'title'=>'Laravel Ajax Request'],
['id'=>7, 'title'=>'Laravel Multiple Image Upload'],
['id'=>8, 'title'=>'Laravel Ckeditor'],
['id'=>9, 'title'=>'Laravel Rest API'],
['id'=>10, 'title'=>'Laravel Pagination'],
];
$data = $this->paginate($myArray);
return view('paginate', compact('data'));
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function paginate($items, $perPage = 5, $page = null, $options = [])
{
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
$items = $items instanceof Collection ? $items : Collection::make($items);
return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
}
}
上面有一个数组,然后运行 paginate 函数以使用 laravel 分页器创建分页。
然后在 blade 中你将执行以下操作:
<div class="container">
<table class="table table-bordered">
<tr>
<th>Id</th>
<th>Title</th>
</tr>
@foreach($data as $post)
<tr>
<td>{{ $post->id }}</td>
<td>{{ $post->title }}</td>
</tr>
@endforeach
</table>
</div>
{{ $data->links() }}
有关更多说明,请查看源代码:
https://www.itsolutionstuff.com/post/how-to-create-pagination-from-array-in-laravelexample.html
您可以使用 LengthAwarePaginator 来实现。
您的案例示例:
$currentPage = $request->page ?? 1;
$itemsPerPage = 4;
// You should manually make a slice of array for current page
$items = array_slice($data, ($currentPage - 1) * $itemsPerPage, $itemsPerPage);
$pagination = new LengthAwarePaginator($items, count($data), $itemsPerPage, $currentPage);
然后在调用 view
时将此 LengthAwarePaginator 实例传递到参数数组中,如下所示:
return view('frontend.poradnik.index', ['data' => $pagination]);
要在您的视图中使用它,请迭代 $data
以呈现您的项目。
@foreach($data as $value)
{{-- Your HTML code here, e.g. show title --}}
<h1>{{ $value['title'] }}</h1>
@endforeach
要显示分页,请使用 links()
方法,如下所示:
{{ $data->links() }}
我是 Laravel 和 php 的初学者。 我尝试使用分页显示列表文章。
我有控制器:
public function poradnik(Request $request)
{
MetaTag::set('title', 'name.pl | xxxxx');
MetaTag::set('description', 'name.pl | xxxxx');
MetaTag::set('keywords', 'name.pl | xxxxx');
$data = [
[
'title' => 'Strona Internetowa, jak Odnieść Sukces?',
'desc' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum luctus ex. Morbi sollicitudin condimentum ante, vel euismod quam rhoncus nec. Ut consectetur convallis libero, ut venenatis libero sagittis ac. Sed hendrerit risus quis luctus dignissim. Morbi tincidunt tempus enim, at volutpat leo placerat sed. Aliquam pharetra dolor faucibus, posuere lacus sit amet, venenatis nulla...',
'url' => 'poradnik-strona-internetowa-jak-odniesc-sukces'
],
[
'title' => 'Znaczenie Linków w Budowaniu Pozycji Strony',
'desc' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum luctus ex. Morbi sollicitudin condimentum ante, vel euismod quam rhoncus nec. Ut consectetur convallis libero, ut venenatis libero sagittis ac. Sed hendrerit risus quis luctus dignissim. Morbi tincidunt tempus enim, at volutpat leo placerat sed. Aliquam pharetra dolor faucibus, posuere lacus sit amet, venenatis nulla...',
'url' => 'poradnik-znaczenie-linkow-w-budowaniu-pozycji-strony'
],
[
'title' => 'Planowanie Sklepu Internetowego',
'desc' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum luctus ex. Morbi sollicitudin condimentum ante, vel euismod quam rhoncus nec. Ut consectetur convallis libero, ut venenatis libero sagittis ac. Sed hendrerit risus quis luctus dignissim. Morbi tincidunt tempus enim, at volutpat leo placerat sed. Aliquam pharetra dolor faucibus, posuere lacus sit amet, venenatis nulla...',
'url' => 'poradnik-planowanie-sklepu-internetowego'
]
.........
];
return view('frontend.poradnik.index', ['data' => $data]);
}
(243 条记录)
查看:
@foreach($data as $value)
<li class="guide-item">
<a href="{{ $value['www'] }}">
<h2>{{ $value['title'] }}</h2></a>
<a href="{{ $value['www'] }}"><p
class="justify-text">
{{ $value['desc'] }}
</p></a>
</li>
@endforeach
<nav aria-label="Page navigation">
<ul class="pagination">
<li class="page-item"><a class="page-link" href="#" aria-label="Previous"></a></li>
<li class="page-item"><a class="page-link" href="#">1</a></li>
<li class="page-item"><a class="page-link" href="#">2</a></li>
<li class="page-item"><a class="page-link" href="#">3</a></li>
<li class="page-item"><a class="page-link" href="#" aria-label="Next"></a></li>
</ul>
</nav>
如何将分页添加到我的代码中?我需要限制每页 4 条记录。我用 Laravel 6 :)
如果我理解正确的话,您需要在数组上进行分页。如果是这种情况,请查看此示例:
class PaginationController extends Controller
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function index()
{
$myArray = [
['id'=>1, 'title'=>'Laravel CRUD'],
['id'=>2, 'title'=>'Laravel Ajax CRUD'],
['id'=>3, 'title'=>'Laravel CORS Middleware'],
['id'=>4, 'title'=>'Laravel Autocomplete'],
['id'=>5, 'title'=>'Laravel Image Upload'],
['id'=>6, 'title'=>'Laravel Ajax Request'],
['id'=>7, 'title'=>'Laravel Multiple Image Upload'],
['id'=>8, 'title'=>'Laravel Ckeditor'],
['id'=>9, 'title'=>'Laravel Rest API'],
['id'=>10, 'title'=>'Laravel Pagination'],
];
$data = $this->paginate($myArray);
return view('paginate', compact('data'));
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function paginate($items, $perPage = 5, $page = null, $options = [])
{
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
$items = $items instanceof Collection ? $items : Collection::make($items);
return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
}
}
上面有一个数组,然后运行 paginate 函数以使用 laravel 分页器创建分页。
然后在 blade 中你将执行以下操作:
<div class="container">
<table class="table table-bordered">
<tr>
<th>Id</th>
<th>Title</th>
</tr>
@foreach($data as $post)
<tr>
<td>{{ $post->id }}</td>
<td>{{ $post->title }}</td>
</tr>
@endforeach
</table>
</div>
{{ $data->links() }}
有关更多说明,请查看源代码: https://www.itsolutionstuff.com/post/how-to-create-pagination-from-array-in-laravelexample.html
您可以使用 LengthAwarePaginator 来实现。
您的案例示例:
$currentPage = $request->page ?? 1;
$itemsPerPage = 4;
// You should manually make a slice of array for current page
$items = array_slice($data, ($currentPage - 1) * $itemsPerPage, $itemsPerPage);
$pagination = new LengthAwarePaginator($items, count($data), $itemsPerPage, $currentPage);
然后在调用 view
时将此 LengthAwarePaginator 实例传递到参数数组中,如下所示:
return view('frontend.poradnik.index', ['data' => $pagination]);
要在您的视图中使用它,请迭代 $data
以呈现您的项目。
@foreach($data as $value)
{{-- Your HTML code here, e.g. show title --}}
<h1>{{ $value['title'] }}</h1>
@endforeach
要显示分页,请使用 links()
方法,如下所示:
{{ $data->links() }}