两种验证方式
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']
];
}