快速开发指南 - ginkgo


验证场景

验证器支持定义场景,便于验证不同场景下的数据。


属性定义

通常使用如下方式:

namespace app\index\validate;

use ginkgo\Validate;

class User extends Validate {

  protected $rule = array(
    'user_name' => array(
      'length' => '1,30',
      'format' => 'alpha_dash',
    ),
    'user_mail' => array(
      'max'    => 300,
      'format' => 'email',
    ),
    'user_ids' => array(
      'require' => true,
    ),
    'act' => array(
      'require' => true,
    ),
  );

  protected $scene = array(
    'submit' => array(
      'user_name',
      'user_mail',
    ),
    'status' => array(
      'user_ids',
      'act',
    ),
    'delete' => array(
      'user_ids',
    ),
  );

}

方法定义

使用 setScene() 方法定义场景,如

class User extends Validate {

  protected $rule = array(
    'user_name' => array(
      'length' => '1,30',
      'format' => 'alpha_dash',
    ),
    'user_mail' => array(
      'max'    => 300,
      'format' => 'email',
    ),
    'user_ids' => array(
      'require' => true,
    ),
    'act' => array(
      'require' => true,
    ),
  );

  function __construct() { //构造函数
    $scene = array(
      'submit' => array(
        'user_name',
        'user_mail',
      ),
      'status' => array(
        'user_ids',
        'act',
      ),
      'delete' => array(
        'user_ids',
      ),
    );

    $this->setScene($scene);
  }

}

setScene() 方法说明

function setScene( $scene [, $value = array()] )

参数

  • scene 场景

    支持两种类型: 为字符串表示场景名,为数组时表示批量设置场景

  • value 场景值

    scene 为字符串时为必须,当 scene 为数组时自动忽略。


场景调用方法

在需要进行验证的地方调用 scene() 方法

$data = array(
  'user_name'  => 'ginkgo',
  'user_mail'  => 121,
);

$validate = Loader::validate('User');

$result = $validate->scene('submit')->verify($data);

if(!$result){
  print_r($validate->getMessage());
}

验证场景还可配合多个方法使用,说明如下:

方法名 描述
scene 使用场景
only 需要验证的字段
remove 移除验证规则
append 追加验证规则

注意:所有方法均支持链式操作,优先级为 only > remove > append


更新时间 10-15 14:27
Top