Функция контроллера для отображения всех сообщений на домашней странице (работает нормально, я могу щелкнуть и увидеть все сообщения в списке, как и ожидалось):
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, это был просто неожиданный результат, который я не знаю, как решить. - person Dan   schedule 12.04.2018