thinkadmin验证器与场景验证

两种验证方式
1.封装在验证类中
这里使用到了构造器提前new验证器类,因为是extends继承了父类,所以需要在构造器中加入
parent::__construct();

2.使用facade静态调用方式

控制器代码部分

<?php
namespace app\goods\controller;

use library\Controller;
use app\goods\logic\QualiLogic;
use think\facade\Request;
use app\goods\validate\SupplierValidate;
use think\facade\Validate;
class Supplier extends Controller
{
public function __construct()
    {
        parent::__construct();
        $this->validate = new SupplierValidate();
    }
 public function edit_quali(\app\goods\logic\QualiLogic $qualilogic)
    {
$postData = Request::post();
        if($postData){
            //方法一:更新供应商资质前的验证
            if (!$this->validate->scene('plan_add')->check($postData)) {
                $this->error($this->validate->getError());
            }
            //方法二:更新供应商资质前的验证
            //$this->edit_quali_validate($postData);
 }

//方法二:更新供应商资质前的验证
    public function edit_quali_validate($postData)
    {
        $rule = [
            'contacts_name|联系人'=>[
                'require'=>'require',
            ],
            'reg_address|注册地址'=>[
                'require'=>'require',
            ],
            'contacts_tel|联系电话'=>[
                'require'=>'require',
                'mobile'=>'mobile'
            ],
            'pro_range|生产范围'=>[
                'require'=>'require',
            ],
            'yet_pro|已生产品种'=>[
                'require'=>'require',
            ],
            'join_pro_cate|合作品种类别'=>[
                'require'=>'require',
            ],
            'join_pro_name|合作品种名称'=>[
                'require'=>'require',
            ],
            'is_pro_cert|是否获得生产许可证'=>[
                'require'=>'require',
            ],
            'pro_cert_name|生产许可证名称'=>[
                'require'=>'require',
            ],
            'pro_cert_no|生产许可证编号'=>[
                'require'=>'require',
            ],
            'pro_cert_date|生产许可证效期'=>[
                'require'=>'require',
            ],
        ];

        Validate::rule($rule);
        //如果验证不通过,直接输出错误信息
        if(!Validate::check($postData)){
            $this->error(Validate::getError());
        }
    }

验证规则

<?php
/**
 * 供应商表必填字段验证
 */
namespace app\goods\validate;

use think\Validate;

class SupplierValidate extends Validate
{
    protected $rule = [
        'contacts_name|联系人'=>[
            'require'=>'require',
        ],
        'reg_address|注册地址'=>[
            'require'=>'require',
        ],
        'contacts_tel|联系电话'=>[
            'require'=>'require',
            'mobile'=>'mobile'
        ],
        'pro_range|生产范围'=>[
            'require'=>'require',
        ],
        'yet_pro|已生产品种'=>[
            'require'=>'require',
        ],
        'join_pro_cate|合作品种类别'=>[
            'require'=>'require',
        ],
        'join_pro_name|合作品种名称'=>[
            'require'=>'require',
        ],
        'is_pro_cert|是否获得生产许可证'=>[
            'require'=>'require',
        ],
        'pro_cert_name|生产许可证名称'=>[
            'require'=>'require',
        ],
        'pro_cert_no|生产许可证编号'=>[
            'require'=>'require',
        ],
        'pro_cert_date|生产许可证效期'=>[
            'require'=>'require',
        ],
    ];


    protected $message  =   [
        'contacts_name.require'  =>'产品名称不能为空'
    ];
    //验证场景,根据场景需要加入上边规则中需要验证的字段
    protected $scene = [
        'plan_add'   =>  ['contacts_name','reg_address','contacts_tel','is_pro_cert','yet_pro','join_pro_cate','join_pro_name']
    ];
}
发布了161 篇原创文章 · 获赞 0 · 访问量 7401

猜你喜欢

转载自blog.csdn.net/weixin_39218464/article/details/105226624
今日推荐