首页 文章

Laravel - 在主页上显示几条帖子,然后链接到休息

提问于
浏览
0

我正试图在Laravel中创建简单的博客,我对这个小细节感到困惑 . 我有博客文章,想在主页上显示少数,并链接到路由localhost / posts分页的其他人 .

问题是我不知道如何从主页创建分页帖子的链接,因此分页从主页的最后一个帖子结束开始 .

编辑:我希望用户能够点击路线'帖子'并查看所有帖子,甚至是主页上的帖子

localhost/  - has first 3 posts 
localhost/posts?page=2  - has the rest starting from 4th post

我试过这样,但没有用 .

Route

Route::get('posts?page={page}', ['as' => 'rest', 'uses' => 'Controller@getRest']);

Controller 有此功能

public function getRest($page) {
    Paginator::setCurrentPage($page);
    $posts = Post::paginate(3);

    return View::make('posts')->with('posts', $posts);
}

我尝试在主页 view 模板中创建链接,如下所示:

<a href="{{ URL::route('posts?page={page}', 2) }}">Show the rest of posts</a>

感谢您的任何帮助 .

1 回答

  • 1

    这应该工作 . 唯一的问题是,当用户点击主页中的 page 2 链接时,用户将看到10个帖子,从第13个帖子开始,而不是第3个帖子 . 将 Controller::posts 中的 ->skip(3 + ($page - 1) * 10) 更改为 ->skip(3 + ($page - 2) * 10) 似乎可以解决问题, page 1 链接将失败 .

    Routes

    Route::get('/', [ 'as' => 'home', 'uses' => 'Controller@home' ]);
    Route::get('posts', [ 'as' => 'posts', 'uses' => 'Controller@posts' ]);
    

    Controller

    class Controller extends BaseController {
    
        public function home()
        {
            $posts = Post::take(3)->get();
            $pagination = Paginator::make($posts->toArray(), Post::count(), 10);
    
            $pagination->setBaseUrl(route('posts'));
    
            return View::make('home', compact('posts', 'pagination'));
        }
    
        public function posts()
        {
            // Current page number (defaults to 1)
            $page = Input::get('page', 1);
    
            // Get 10 post according to page number, after the first 3
            $posts = Post::skip(3 + ($page - 1) * 10)->take(10)->get();
    
            // Create pagination
            $pagination = Paginator::make($posts->toArray(), Post::count(), 10);
    
            return View::make('posts', compact('posts', 'pagination'));
        }
    
    }
    

    home.blade.php

    @foreach ($posts as $post)
    
         {{ $post->title }}
    
    @endforeach
    
    {{ $pagination->links() }}
    

相关问题