最近建了個新專案,想著既然本地及線上環境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\Support\ServiceProvider;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Paginator::useBootstrap();
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結