Skip to main content

BaseController

Trait BaseController 

Source
pub trait BaseController: SzController {
    // Provided methods
    fn batch_validate(&self) -> bool { ... }
    fn middlewares(&self) -> Vec<String> { ... }
    fn initialize(&self) { ... }
    fn validate(
        &self,
        data: &Value,
        rules: &[(&str, &str)],
        messages: &[(&str, &str)],
    ) -> Result<(), String> { ... }
}
Expand description

控制器基础 trait(对齐 PHP app\BaseController

PHP 继承链:BaseController → SzController → AddonsBaseController → 业务控制器。 Rust 等价:BaseController: SzController(trait 继承),业务控制器同时实现 BaseControllerSzController(trait 继承自动传播)。

§PHP 对齐

PHP 属性/方法Rust 等价
protected $request通过方法参数 req: Request<Body> 传入(见 SzController
protected $app通过 axum State<App> 提取器获取(不在 trait 中)
protected bool $batchValidate = falseBaseController::batch_validate
protected array $middleware = []BaseController::middlewares
protected function initialize() {}BaseController::initialize
protected function validate(...)BaseController::validate(占位,完整实现)

§状态迁移说明

PHP BaseController 是 abstract class,包含状态字段($request/$app)。Rust 控制器 推荐无状态(每个请求通过参数传入 Request),因此本 trait 不持有状态,仅定义行为。

Provided Methods§

Source

fn batch_validate(&self) -> bool

是否批量验证(对齐 PHP protected bool $batchValidate = false

返回 true 时,validate 方法会收集所有错误后一次性返回; 返回 false 时,遇到第一个错误即返回。

Source

fn middlewares(&self) -> Vec<String>

控制器中间件列表(对齐 PHP protected array $middleware = []

返回中间件标识符列表(如 ["auth", "cors"])。 实际中间件注册在中间件系统中处理。

Source

fn initialize(&self)

初始化钩子(对齐 PHP protected function initialize() {}

在控制器实例化后、方法调用前执行。 子类可重写以执行初始化逻辑(如设置默认值、加载配置)。

§PHP 对齐
protected function initialize() {
    // 子类重写
}
Source

fn validate( &self, data: &Value, rules: &[(&str, &str)], messages: &[(&str, &str)], ) -> Result<(), String>

数据验证(对齐 PHP protected function validate(...)

§PHP 对齐
protected function validate(array $data, $validate, array $message = [], bool $batch = false) {
    // ... 完整验证逻辑
}
§实现说明

rulesmessages 转换为内部 Validate 构建器调用, 批量模式由 BaseController::batch_validate 决定(对齐 PHP $batch 参数默认值 false,但 Rust 通过 trait 方法覆盖以适配无状态控制器)。

§参数
  • data:待验证的数据
  • rules:验证规则列表,元组格式 (字段名, 规则字符串)
    • 例:[("name", "require"), ("age", "require|integer|gt:0")]
  • messages:错误消息列表,元组格式 (规则键, 消息)
    • 例:[("name.require", "名称必填"), ("age.integer", "年龄须为整数")]
§返回
  • Ok(()):验证通过
  • Err(String):验证失败,包含错误消息(批量模式下以 ; 分隔多条错误)

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§