Laravel 6手动分页实现:新手如何给静态文章列表分页
Laravel 6 手动实现文章列表分页(每页4条)
作为Laravel新手,手动处理数组分页其实用Laravel自带的LengthAwarePaginator就能轻松搞定,不用自己写复杂的分页逻辑。我帮你一步步修改代码:
第一步:修改控制器代码
首先,我们需要引入Laravel的分页类,然后把手动数组转换成可分页的实例:
use Illuminate\Pagination\LengthAwarePaginator; // 记得在控制器顶部导入这个类 public function poradnik(Request $request) { MetaTag::set('title', 'name.pl | xxxxx'); MetaTag::set('description', 'name.pl | xxxxx'); MetaTag::set('keywords', 'name.pl | xxxxx'); // 你的原始数据数组(保留你原来的243条数据) $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' ] // 共243条数据 ]; // 分页核心逻辑 $perPage = 4; // 每页显示4条数据 $page = $request->input('page', 1); // 获取当前页码,默认显示第1页 $offset = ($page - 1) * $perPage; // 计算当前页数据的偏移量 // 从原始数组中截取当前页需要展示的数据 $currentPageItems = array_slice($data, $offset, $perPage); // 创建分页实例,自动处理分页链接和页码计算 $paginator = new LengthAwarePaginator( $currentPageItems, count($data), // 总数据条数 $perPage, $page, [ 'path' => $request->url(), // 分页链接的基础URL 'query' => $request->query(), // 保留请求中的其他参数(如果有的话) ] ); // 将分页实例传给视图 return view('frontend.poradnik.index', ['data' => $paginator]); }
第二步:修改视图代码
这里有两个小细节要修正:一是你视图里用的$value['www']是错误的,原始数据里的字段是url;二是替换手动写的分页HTML为Laravel自带的分页链接(也可以自定义样式):
{{-- 遍历分页后的文章数据 --}} @foreach($data as $value) <li class="guide-item"> <a href="{{ $value['url'] }}"> {{-- 把www修改为正确的url字段 --}} <h2>{{ $value['title'] }}</h2> </a> <a href="{{ $value['url'] }}"> {{-- 同样这里也要修正字段名 --}} <p class="justify-text">{{ $value['desc'] }}</p> </a> </li> @endforeach {{-- 替换手动分页为Laravel自带的分页组件 --}} <nav aria-label="Page navigation"> {{ $data->links() }} </nav>
如果想保留你原来的分页样式,可以自定义分页视图:在Laravel 6中运行php artisan vendor:publish --tag=laravel-pagination命令,把分页视图文件发布到resources/views/vendor/pagination目录,然后修改对应的HTML和CSS样式即可。
内容的提问来源于stack exchange,提问作者traffske
相关产品推荐
相关产品推荐

