Model.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Leo
  5. * Date: 2017/11/12
  6. * Time: 下午3:59
  7. */
  8. namespace common\components;
  9. use common\helpers\Validator;
  10. use yii\base\InvalidConfigException;
  11. class Model extends \yii\base\Model {
  12. use \common\traits\ModelTrait;
  13. /**
  14. * @var \common\libs\logging\operate\AdminOperate
  15. */
  16. protected $adminOperateLogger;
  17. /**
  18. * @var \common\libs\logging\operate\UserOperate
  19. */
  20. protected $userOperateLogger;
  21. protected $systemLogger;
  22. /**
  23. * 扩展父类方法用于校验表单
  24. * @return \ArrayObject
  25. * @throws InvalidConfigException
  26. */
  27. public function createValidators()
  28. {
  29. $validators = new \ArrayObject();
  30. foreach ($this->rules() as $rule) {
  31. if ($rule instanceof \yii\validators\Validator) {
  32. $validators->append($rule);
  33. } elseif (is_array($rule) && isset($rule[0], $rule[1])) { // attributes, validator type
  34. if(array_key_exists($rule[1], Validator::$extensionRule)){
  35. // 启用扩展规则
  36. $otherParams = array_merge(['validateMethod'=>$rule[1]], array_slice($rule, 2));
  37. $validator = \yii\validators\Validator::createValidator('\common\helpers\Validator', $this, (array) $rule[0], $otherParams);
  38. } else {
  39. $validator = \yii\validators\Validator::createValidator($rule[1], $this, (array) $rule[0], array_slice($rule, 2));
  40. }
  41. $validators->append($validator);
  42. } else {
  43. throw new InvalidConfigException('Invalid validation rule: a rule must specify both attribute names and validator type.');
  44. }
  45. }
  46. return $validators;
  47. }
  48. }