CatchAdmin自定义验证规则

前言: 本案例主要以 创建编辑Cate类型 为例,让大家更容易理解自定义验证规则全程实现方式。

创建自定义验证类

路径 :extend/catcher/validates

新建验证类

<?php
namespace catcher\validates;

use catchAdmin\system\model\Cate;

class checkCate implements ValidateInterface
{
   //验证的方法名
    public function type(): string
    {
        // TODO: Implement type() method. 返回验证类名:checkCate
        return 'checkCate';  
    }
    
    //数据验证操作
    public function verify($value): bool
    {
        // TODO: Implement verify() method.  
        //方式一:自定义的findParamsBy()方法(这里根据我的业务需求新增的)
        $model=new Cate();
        $param['is_id']=1;//验证数据是否存在参数
        $param['id']=$value;
        $param['group_code']='equipment_main_cate';
        $model->findParamsBy($param);
        //返回结果:true或者false ,否则无法验证
        return empty($model->findParamsBy($param)) ? false : true;
        
        //方式二:自定义的findBy($id)方法(catchadmin官网)
        $model=new Cate();
        //返回结果:true或者false ,否则无法验证
        return empty($model->findBy($value)) ? false : true;
        
    }
    
    //错误消息返回
    public function message(): string
    {
        // TODO: Implement message() method.
        return '所属设备大类不存在';
    }
}

配置验证规则

路径:config/catch.php

  /**
    * 自定义验证规则
    *
    */
    'validates' => [
        \catcher\validates\Sometimes::class,
        \catcher\validates\SensitiveWord::class,
        \catcher\validates\CheckCate::class //新增的验证规则
    ],

创建自定义Request

路径:控制器同级

创建request文件

创建控制器同名目录并且创建Requst文件

在这里插入图片描述

代码示例

<?php
namespace catchAdmin\equipment\request\equipmentCate;

use catchAdmin\equipment\model\EquipmentCate;
use catcher\base\CatchRequest;

class EquipmentCateRequest extends CatchRequest
{
    protected function rules(): array
        // TODO: Implement rules() method.
    {
        //验证数据的唯一性:当ID不为空则验证编辑(id<>$id),为空则验证新增的
        $id = !empty(request()->route()['id'])?','.request()->route()['id']:'';
        return [
            'name|类型名称' => 'require|length:2,20',
            'hosted|是否主机' => 'require',
            'equipment_main_cate_id|所属设备大类' => 'require|checkCate|unique:'.EquipmentCate::class.',name^equipment_main_cate_id'.$id,
            'remark|备注' => 'length:1,255'
        ];
    }

    //自定义验证信息
    protected function message(): array
    {
        // TODO: Implement message() method.
        return [
            'equipment_main_cate_id.checkCate' => '所属设备大类不存在,请重新选择',
            'equipment_main_cate_id.unique' => '设备类型已经存在,请重新输入',
        ];
    }


}

使用自定义Request

控制器中引用自定义Request

代码示例

#use catcher\base\CatchRequest as Request; //非自定义使用
//自定义Requst请求,可在数据操作前进行数据验证(同validate验证)
use catchAdmin\equipment\request\equipmentCate\EquipmentCateRequest as Request; 
use catcher\CatchResponse;
use catcher\base\CatchController;
use catchAdmin\equipment\model\EquipmentCate as EquipmentCateModel;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值