anandpilania/f3-validator

FatFreeFramework 的验证器包。

v1.2.5 2019-08-12 17:09 UTC

This package is auto-updated.

Last update: 2024-09-16 16:49:10 UTC


README

Hits

一个易于使用的 Fatfree-framework 验证器包,使用 F3 内置翻译。您也可以直接在模型中使用它。

注意:本包从 illuminate/validator 中移植了一些类和想法。
注意:样本字典/语言文件包含为 en.php.sample,请以此作为参考。

## 使用方法

  • 1: 初始化,传递数据和验证

    `$validator = new Validator(

      array('name' => 'Anand Pilania', 'email' => 'abc@def.ge'),
      
      array('name' => 'required|min:3|max:60', 'email' => 'required|unique:Models\User|email')
    

    )->validate();`

    注意:您还可以将更多数据传递给 validate 方法。

    • 另一种方法

      `$validator = Validator::instance()->validate(

        array('name' => 'Anand Pilania', 'email' => 'abc@def.ge'),
        
        array('name' => 'required|min:3|max:60', 'email' => 'required|unique:NAMESPACED_MODEL_CLASS_OR_CONFIG_MODEL.PARAM`|email')
      

      );`

  • 2: 获取验证状态(返回 -> true/false)

    $validator->passed();

  • 3: 如果验证失败,检索失败的属性及其格式化的消息/错误(返回 -> 数组)

    $validator->errors();

设置

  • composer require anandpilania/f3-validator

规则

无参数使用

  • boolean OR bool, string, integer OR int, array, numeric, alpha, alpha_num, alpha_dash,
  • url, nullable, json, required, confirmed, active_url, email, ip, ipv4, ipv6, filled

带参数使用

  • min, max, size, between - min:6, max:255, size:3, between:1,3
  • unique - unique:NAMESPACED_MODEL_CLASS_OR_CONFIG_MODEL
  • ...

在模型中使用

  • 推荐:在控制器中验证用户输入是推荐的方式

控制器

`$validator = Validator::instance()->validate($f3->get('POST'), array(
	'field' => 'required|CHECK_PARAM' // EG: 'email' => 'required|email|unique:Models\User'
));`

`if(!$validator->passed()) {
	return/flash $validator->errors();
}`

在模型中使用

  • 您也可以直接在模型中使用此验证器:例如,在 beforesave 触发器上的验证:(此示例使用 ikkez/f3-cortex

模型

`protected $validator;
 public function __construct() {
      parent::__construct();
      $saveHandler = function() {
	       foreach($this->getFieldConfiguration() as $field => $conf) {
        	    if(isset($conf['validate'])) {
            	    $rules[$field] = $conf['validate'];
            	    $data[$field] = $this->get($field);
            	    if(Validator::instance()->str_contains($conf['validate'], 'confirmed')) {
        	    	   $confirmation = $field.'_confirmation';
                	   $data[$field.'_confirmation'] = null !== $f3->get('POST.'.$confirmation)?$f3->get('POST.'.$confirmation):$f3->get('GET.'.$confirmation);
            	    }
        	    }
    	    }
    	    $this->validator = Validator::instance()->validate($data, $rules);
	        return $this->validator->passed();
	   };
   $this->beforesave($saveHandler);
}`

控制器

`$model = new MODEL;
 $model->copyFrom($f3->get('POST'), array_keys($model->fieldConf));
 $mode->save();
 
 if($model->validator->passed()) {
 	// NO ERRORS
 }else{
 	// VAIDATION FAILED
	$errors = $model->validator->errors();
 }`

-- http://about.me/anandpilania

使用唯一验证器(两种方法)

  • 只需传递 NAMESPACE_MODEL_CLASS => unique:Models\User

  • 在配置中定义,例如:

    INI => MODEL.USERS = Models\User HIVE => $f3->set('MODEL.USERS', 'Models\User');

    然后使用 unique:users