thinkphp应用内自定义分页类

所属分类:php | 发布于 2023-12-11 22:41:40

博客的分页貌似有点问题,想修复它,结果发现没那么简单,最终发现原因是provider.php只能全局定义,不能针对单个应用定义。

就是这句话,之前看文档没注意,今天总算注意到:

provider.php服务提供定义文件只能全局定义,不支持在应用下单独定义

这就是罪魁祸首。

自定义分页类

官方文档,如果要使用自定义类,首先要扩展一个分页驱动,然后在provider.php文件中重新绑定。

return [
    'think\Paginator'    =>    'app\common\Bootstrap'
];

但是我们是多应用项目,想在某些应用里面自定义分页类。但是app/provider.php里面的是全局绑定,所以要找个地方来重新绑定自己的分页类。

解决方法

不卖关子,直接说解决方法,可以在两个地方绑定。

1、在app/admin/BaseController类的initialize()方法内绑定

$this->app->bind('think\Paginator', \app\common\paginator\AdminBootstrap::class);

2、在中间件中绑定

2.1、在应用middleware目录下新建PaginatorMiddleware中间件

namespace app\admin\middleware;

class PaginatorMiddleware
{
    public function handle($request, \Closure $next)
    {
        app()->bind('think\Paginator', 'app\common\paginator\AdminBootstrap');
        return $next($request);
    }
}

2.1、在应用中间件配置文件中添加分页类中间件

return [
    app\admin\middleware\PaginatorMiddleware::class
];

 

 

文哥博客(https://wenge365.com)属于文野个人博客,欢迎浏览使用

联系方式:qq:52292959 邮箱:52292959@qq.com

备案号:粤ICP备18108585号 友情链接