laravel 8 修改默认的paginate分页模板
最近建了个新项目,想着既然本地及线上环境php版本都升级到了7.3,于是就决定采用laravel 8框架来开发。
对照文档粗略的看了下与之前版本的区别,发现自带的分页ui由bootstrap UI改为tailwind css了。
一路查看源码,首先找到 Illuminate\Pagination\AbstractPaginator
115和122行:
/**
* The default pagination view.
*
* @var string
*/
public static $defaultView = 'pagination::tailwind';
/**
* The default "simple" pagination view.
*
* @var string
*/
public static $defaultSimpleView = 'pagination::simple-tailwind';
以及下方552行之后
/**
* Set the default pagination view.
*
* @param string $view
* @return void
*/
public static function defaultView($view)
{
static::$defaultView = $view;
}
/**
* Set the default "simple" pagination view.
*
* @param string $view
* @return void
*/
public static function defaultSimpleView($view)
{
static::$defaultSimpleView = $view;
}
我们的分页方法是 $list->links();
肯定与links
这个方法有关,找到,vendor/laravel/framework/src/Illuminate/Pagination/Paginator.php
这个是分页组件的入口文件(可以这么理解了),找一下links()
方法, 94行,
/**
* Render the paginator using the given view.
*
* @param string|null $view
* @param array $data
* @return string
*/
public function links($view = null, $data = [])
{
return $this->render($view, $data);
}
/**
* Render the paginator using the given view.
*
* @param string|null $view
* @param array $data
* @return \Illuminate\Contracts\Support\Htmlable
*/
public function render($view = null, $data = [])
{
return static::viewFactory()->make($view ?: static::$defaultSimpleView, array_merge($data, [
'paginator' => $this,
]));
}
可以看到参数$view
指的就是对应的是模板名:
pagination::simple-default // 默认,tailwind样式
pagination::simple-bootstrap-4 // bootstrap UI
所以我们在渲染分页时只需传参:
$data -> links('pagination::bootstrap-4')
就可以修改分页模板ui为bootstrap UI
了。
是不是很简单优雅!
— end —
修改时间:2021-03-02 09:20
上述是通过改变渲染方法对应的参数而实现,而评论区大佬提供了一个更好的方法:
\App\Providers\AppServiceProvider
在该’服务容器提供商’ boot()
方法中加入一行代码即可:
use Illuminate\Pagination\Paginator;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Paginator::useBootstrap();
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
文章写了很多,但其实最后那一句就够了。只是为了说明下自己查看源码的过程而已,不喜轻喷。