【发布时间】:2018-04-11 22:06:23
【问题描述】:
用于在主页上显示所有帖子的控制器功能(工作正常,我可以单击并查看按预期列出的所有帖子):
namespace App\Http\Controllers;
use App\Post;
use Illuminate\Http\Request;
class PostsController extends Controller
{
public function showPosts()
{
$posts = Post::paginate(5);
return view('index', ['posts' => $posts]);
}
用于显示其他页面上所有帖子的控制器功能:
use App\Page;
use App\Post;
use Illuminate\Http\Request;
class PagesController extends Controller
{
public function show($slug)
{
$posts = Post::paginate(16);
$page = Page::findBySlug($slug);
return view('page', ['page' => $page, 'posts' => $posts]);
}
要显示在 index.blade 内的索引上:
@foreach ($posts as $post)
@include('partials.post', ['post' => $post])
@endforeach
要显示在 pages.blade 内的其他页面上:
{{ $posts->links() }}
@foreach ($posts as $post)
<?php
{
if ($post->category_id == $page->id){?>
@include('partials.post', ['post' => $post])
<?php }
}?>
@endforeach
主页运行良好。其他页面在一定程度上起作用。他们在正确的页面上显示正确的帖子。问题在于分页。
以第16个帖子为例,如果我说$posts = Post::paginate(16);那么帖子显示在页面上并且没有显示分页按钮,因为帖子总数是16。如果我说$posts = Post::paginate(2);那么第16个帖子出现在分页第 8 页上,即使它是该页面的唯一帖子。
【问题讨论】:
-
您可以制作自己的分页模板和控制按钮的外观。
-
我认为这是我获取
$post数据的方式的问题,而不是 laravel 的分页问题,这只是一个意外的结果,我不知道如何解决。 -
不清楚,有什么问题。 “那么第 16 个帖子出现在分页第 8 页上,即使它是该页面的唯一帖子” - 你为什么只有一个帖子?您有 16 个帖子!
标签: laravel laravel-pagination laravel-paginate