资源
我们把一个后台控制器加对应的路由、权限统称为资源,资源其实是一种简化定义的手段,避免配置过于繁琐。
初始化
使用资源,在应用入口文件 App.php
中的 init
方法进行初始化,如下:
php
$app->getResource()->set(
"admin", // 资源名
(new DuxResource(
'admin', // 路由、权限应用名
'/admin' // 路由前缀
))
->addAuthMiddleware(
new PermissionMiddleware("admin", SystemUser::class), // 权限检测中间件
new AuthMiddleware("admin") // 鉴权中间件
)
);
$app->getResource()->set(
"admin", // 资源名
(new DuxResource(
'admin', // 路由、权限应用名
'/admin' // 路由前缀
))
->addAuthMiddleware(
new PermissionMiddleware("admin", SystemUser::class), // 权限检测中间件
new AuthMiddleware("admin") // 鉴权中间件
)
);
初始化资源后您可以通过路由、权限的获取方法来根据应用名来获取对应的类来进行后续操作。
资源控制器
框架为了简化后台的增删差改等操作,将这些操作进行了封装。
只需要继承 Dux\Resources\Action\Resources
类并设置注解路由,则自动实现相关的增删差改的 api 方法给前端使用,并生成对应的权限列表供权限限制使用。
同时可以继承父类方法来实现字段转换、过滤、验证等操作,具体请查看具体代码注释。
php
<?php
declare(strict_types=1);
namespace App\Content\Admin;
use Dux\Resources\Action\Resources;
#[Resource(app: 'admin', route: '/content/page', name: 'content.page')]
class Page extends Resources
{
protected string $model = \App\Content\Models\Page::class;
public function transform(object $item): array
{
return [
"id" => $item->id,
];
}
// 自定义动作路由
#[Action(methods: 'POST', route: '/custom')]
public function list(ServerRequestInterface $request, ResponseInterface $response, array $args): ResponseInterface
{
return send($response, 'ok');
}
}
<?php
declare(strict_types=1);
namespace App\Content\Admin;
use Dux\Resources\Action\Resources;
#[Resource(app: 'admin', route: '/content/page', name: 'content.page')]
class Page extends Resources
{
protected string $model = \App\Content\Models\Page::class;
public function transform(object $item): array
{
return [
"id" => $item->id,
];
}
// 自定义动作路由
#[Action(methods: 'POST', route: '/custom')]
public function list(ServerRequestInterface $request, ResponseInterface $response, array $args): ResponseInterface
{
return send($response, 'ok');
}
}