# 验证架构 * * * * * 验证是指验证层,每个模块下都有个目录叫validate,是用于定义数据验证器的,OneBase推荐尽量将验证放入validate目录。 ~~~ <?php // +---------------------------------------------------------------------+ // | OneBase | [ WE CAN DO IT JUST THINK ] | // +---------------------------------------------------------------------+ // | Licensed | http://www.apache.org/licenses/LICENSE-2.0 ) | // +---------------------------------------------------------------------+ // | Author | Bigotry <3162875@qq.com> | // +---------------------------------------------------------------------+ // | Repository | https://gitee.com/Bigotry/OneBase | // +---------------------------------------------------------------------+ namespace app\admin\validate; /** * 菜单验证器 */ class Menu extends AdminBase { // 验证规则 protected $rule = [ 'name' => 'require', 'sort' => 'require|number', 'url' => 'require|unique:menu' ]; // 验证提示 protected $message = [ 'name.require' => '菜单不能为空', 'sort.require' => '排序值不能为空', 'url.require' => 'url不能为空', 'url.unique' => 'url已存在', 'sort.number' => '排序值必须为数字', ]; // 应用场景 protected $scene = [ 'add' => ['name', 'sort', 'url'], 'edit' => ['name', 'sort', 'url'], ]; } ~~~ 比如上面就是admin模块下的菜单验证器,具体使用方法需阅读TP5手册。 可以看到 这个类继承了 AdminBase,在validate目录下其实结构上跟控制器与逻辑层都差不多,都有属于自己模块的基础类,AdminBase extends ValidateBase ,基础验证器类又继承自公共模块下的ValidateBase。 组织结构也是一样某模块需要复用的验证放入某模块的基类验证器中,可能多个模块复用的验证则可放入公共模块的验证器中。 OneBase建议验证器只在逻辑层使用,不要在控制器中直接使用验证器。