| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 
							- <?php
 
- /**
 
-  * Created by PhpStorm.
 
-  * User:  NODELOG
 
-  * Date: 16/6/24
 
-  * Time: 下午2:40
 
-  */
 
- namespace api\common\behaviors;
 
- use yii\base\Behavior;
 
- use yii\base\DynamicModel;
 
- use yii\validators\Validator;
 
- use yii\base\InvalidConfigException;
 
- /**
 
-  * 验证参数
 
-  * Class ValidateBehavior
 
-  * @package api\common\behaviors
 
-  */
 
- class ValidateBehavior extends Behavior
 
- {
 
-     public function validate($data, $rules)
 
-     {
 
-         $_attributes = [];
 
-         foreach ($rules as $rule) {
 
-             if (is_array($rule[0])) {
 
-                 $_attributes = array_merge($_attributes, $rule[0]);
 
-             } else {
 
-                 $_attributes[] = $rule[0];
 
-             }
 
-         }
 
-         $model = new DynamicModel($_attributes);
 
-         if (!empty($rules)) {
 
-             $validators = $model->getValidators();
 
-             foreach ($rules as $rule) {
 
-                 if ($rule instanceof Validator) {
 
-                     $validators->append($rule);
 
-                 } elseif (is_array($rule) && isset($rule[0], $rule[1])) { // attributes, validator type
 
-                     $validator = Validator::createValidator($rule[1], $model, (array) $rule[0], array_slice($rule, 2));
 
-                     $validators->append($validator);
 
-                 } else {
 
-                     throw new InvalidConfigException('Invalid validation rule: a rule must specify both attribute names and validator type.');
 
-                 }
 
-             }
 
-         }
 
-         $model->attributes = $data;
 
-         $model->validate();
 
-         return $model;
 
-     }
 
- }
 
 
  |