mayoz/pagination

为 Laravel 分页创建美观的 URL

dev-master 2015-11-06 21:12 UTC

This package is auto-updated.

Last update: 2024-08-27 22:38:52 UTC


README

创建美观且SEO友好的分页链接。

安装和需求

首先,您需要将包添加到 composer.json 文件的 require 属性中

{
    "require": {
        "mayoz/pagination": "dev-master"
    },
}

然后,从您的命令行运行 composer update。最后,打开 config/app.php 文件。在 providers 数组中找到 'Illuminate\Pagination\PaginationServiceProvider' 并将其替换为 'Mayoz\Pagination\PaginationServiceProvider'

使用方法

这非常简单。考虑以下示例。我接受您提供模型。创建路由、控制器和视图。

路由

app\Http\routes 中定义路由

<?php
$router->get('articles/{page?}', [
    'as'   => 'articles',
    'uses' => 'HomeController@articles'
]);

控制器

酷。不要写额外的代码!

<?php namespace App\Http\Controllers;

use App\Article;

class HomeController {

    public function articles()
    {
        $articles = Article::paginate(5);

        return view('articles', compact('articles'));
    }
}

视图

核心分页类未更改。可以使用 Laravel 提供的所有功能。

<ul>
    @foreach ($articles as $article)
        <li>{{ $article->title }}<li>
    @endforeach
</ul>

{!! $articles->links() !!}

您还可以使用;

  • {!! $articles->appends(['sort' => 'vote'])->links() !!}
  • {!! $articles->links('pagination.special') !!}
  • 或未来的方法...

输出示例

以下输出已生成。我认为这些示例已经足够。尽可能SEO友好。不过,请检查您的URL。如果需要,请使用 canonical 元数据。

使用如 {page?},如果路由末尾有页面模式。

<?php
$router->get('articles/{page?}', [
    'as'   => 'articles',
    'uses' => 'HomeController@articles'
]);

输出

  • /articles
  • /articles/2
  • /articles/3

如果路由中间有 {page} 模式,不需要问号。

<?php
$router->get('module/{page}/articles', [
    'as'   => 'module.articles',
    'uses' => 'HomeController@articles'
]);

输出

  • /module/1/articles
  • /module/2/articles
  • /module/3/articles

使用特殊路由

如果您需要使用与当前路由不同的路由,请使用 route() 方法。此方法接受路由名称和路由参数。

注意:第二个参数是可选的。此参数用于特殊路由参数。

路由

路由不同但使用相同的控制器和视图。

<?php
$router->get('articles', [
    'as'   => 'articles',
    'uses' => 'HomeController@articles'
]);

$router->get('articles/{module}/{page?}', [
    'as'   => 'articles.paginate',
    'uses' => 'HomeController@articles'
]);

控制器

与前面的定义相同。添加了特殊路由(其名称为 article.paginate)用于分页URL生成器。除了 {page} 之外,此路由需要一个参数(模块)。

注意:自动设置当前路由上的路由参数。

<?php namespace App\Http\Controllers;

use App\Article;

class HomeController {

    public function articles()
    {
        $articles = Article::paginate(5);
        $articles->route('articles.paginate', [ 'module' => 'photo' ]);

        return view('articles', compact('articles'));
    }
}

输出

  • /articles/photo
  • /articles/photo/2
  • /articles/photo/3

贡献

安装并使用此包。如果发现错误,请修复并在 develop 分支上发送拉取请求。

版权和许可

此包由 Sercan Çakır 编写。它发布在 MIT 许可下。有关详细信息,请参阅 LICENSE 文件。