laravel 8 修改默认的paginate分页模板

最近使用日志工具ARCANEDEV/LogViewer时,安装成功之后,发现分页有问题,应该是作者还没有适配Laravel8造成的。

对照文档粗略的看了下与之前版本的区别,发现自带的分页 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
所以我把作者的分页方法由rander()改为带参数的:
$data->links('pagination::bootstrap-4')
就可以修改分页模板 ui 为 bootstrap UI 了。

作者:jrue原文地址:https://segmentfault.com/a/1190000041328391

%s 个评论

要回复文章请先登录注册