阅读时间:1 分钟
0 字
CRUD 开发
基于资源控制器的快速 CRUD 开发入门指南。
快速开始
1. 注册路由
在模块的 App.php
中注册路由:
php
// app/Admin/App.php
<?php
namespace App\Admin;
use Core\App\AppExtend;
use Core\Bootstrap;
use Core\Route\Route;
class App extends AppExtend
{
public function register(Bootstrap $bootstrap): void
{
// 注册管理后台路由
$adminRoute = new Route('/admin', 'admin');
\Core\App::route()->set('admin', $adminRoute);
}
}
2. 创建资源控制器
php
// app/Admin/UserController.php
<?php
namespace App\Admin;
use Core\Resources\Attribute\Resource;
use Core\Resources\Action\Resources;
#[Resource(app: 'admin', route: '/users', name: 'users')]
class UserController extends Resources
{
protected string $model = User::class;
// 自动提供 CRUD 接口:
// GET /admin/users - 列表
// POST /admin/users - 创建
// GET /admin/users/{id} - 详情
// PUT /admin/users/{id} - 更新
// DELETE /admin/users/{id} - 删除
}
3. 创建模型
php
// app/Models/User.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $table = 'users';
// 必须实现 transform 方法
public function transform(): array
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'status' => $this->status,
'created_at' => $this->created_at,
];
}
}
自定义验证
php
class UserController extends Resources
{
protected string $model = User::class;
public function validator(array $data, ServerRequestInterface $request, array $args): array
{
return [
'name' => [['required', '用户名不能为空'], ['lengthMax', 50, '用户名过长']],
'email' => [['required', '邮箱不能为空'], ['email', '邮箱格式不正确']],
];
}
}
自定义方法
php
class UserController extends Resources
{
protected string $model = User::class;
#[Action(methods: 'POST', route: '/batch')]
public function batch(ServerRequestInterface $request, ResponseInterface $response, array $args): ResponseInterface
{
$data = $request->getParsedBody();
$action = $data['action'];
$ids = $data['ids'];
switch ($action) {
case 'delete':
User::whereIn('id', $ids)->delete();
break;
case 'enable':
User::whereIn('id', $ids)->update(['status' => 1]);
break;
}
return send($response, 'ok', '操作成功');
}
}
添加认证
php
// 注册需要认证的路由
$adminRoute = new Route('/admin', 'admin', new AuthMiddleware());
\Core\App::route()->set('admin', $adminRoute);