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;
- }
- }
|