Overview

Namespaces

  • None
  • Wei
    • Validator

Classes

  • Wei\Validator\All
  • Wei\Validator\AllOf
  • Wei\Validator\Alnum
  • Wei\Validator\Alpha
  • Wei\Validator\BaseValidator
  • Wei\Validator\Between
  • Wei\Validator\Blank
  • Wei\Validator\Callback
  • Wei\Validator\CharLength
  • Wei\Validator\Chinese
  • Wei\Validator\Color
  • Wei\Validator\Contains
  • Wei\Validator\CreditCard
  • Wei\Validator\Date
  • Wei\Validator\DateTime
  • Wei\Validator\Decimal
  • Wei\Validator\Digit
  • Wei\Validator\Dir
  • Wei\Validator\DivisibleBy
  • Wei\Validator\DoubleByte
  • Wei\Validator\Email
  • Wei\Validator\EndsWith
  • Wei\Validator\EqualTo
  • Wei\Validator\Exists
  • Wei\Validator\FieldExists
  • Wei\Validator\File
  • Wei\Validator\GreaterThan
  • Wei\Validator\GreaterThanOrEqual
  • Wei\Validator\IdCardCn
  • Wei\Validator\IdCardHk
  • Wei\Validator\IdCardMo
  • Wei\Validator\IdCardTw
  • Wei\Validator\IdenticalTo
  • Wei\Validator\Image
  • Wei\Validator\In
  • Wei\Validator\Ip
  • Wei\Validator\Length
  • Wei\Validator\LessThan
  • Wei\Validator\LessThanOrEqual
  • Wei\Validator\Lowercase
  • Wei\Validator\Luhn
  • Wei\Validator\MaxLength
  • Wei\Validator\MinLength
  • Wei\Validator\MobileCn
  • Wei\Validator\NaturalNumber
  • Wei\Validator\NoneOf
  • Wei\Validator\Null
  • Wei\Validator\Number
  • Wei\Validator\OneOf
  • Wei\Validator\Password
  • Wei\Validator\Phone
  • Wei\Validator\PhoneCn
  • Wei\Validator\PlateNumberCn
  • Wei\Validator\PositiveInteger
  • Wei\Validator\PostcodeCn
  • Wei\Validator\Present
  • Wei\Validator\QQ
  • Wei\Validator\RecordExists
  • Wei\Validator\Regex
  • Wei\Validator\Required
  • Wei\Validator\SomeOf
  • Wei\Validator\StartsWith
  • Wei\Validator\Time
  • Wei\Validator\Tld
  • Wei\Validator\Type
  • Wei\Validator\Uppercase
  • Wei\Validator\Url
  • Wei\Validator\Uuid
  • Overview
  • Namespace
  • Function
  1: <?php
  2: /**
  3:  * Wei Framework
  4:  *
  5:  * @copyright   Copyright (c) 2008-2015 Twin Huang
  6:  * @license     http://opensource.org/licenses/mit-license.php MIT License
  7:  */
  8: 
  9: namespace Wei\Validator;
 10: 
 11: /**
 12:  * Check if all of the element in the input is valid by all specified rules
 13:  *
 14:  * @author      Twin Huang <twinhuang@qq.com>
 15:  */
 16: class All extends BaseValidator
 17: {
 18:     /**
 19:      * @var string
 20:      */
 21:     protected $notArrayMessage = '%name% must be of type array';
 22: 
 23:     /**
 24:      * This message is just a placeholder, would not display to user
 25:      *
 26:      * @var string
 27:      */
 28:     protected $invalidMessage = 'Some of the items is not valid';
 29: 
 30:     /**
 31:      * @var string
 32:      */
 33:     protected $itemName = '%name%\'s %index% item';
 34: 
 35:     /**
 36:      * @var array
 37:      */
 38:     protected $rules = array();
 39: 
 40:     /**
 41:      * The invalid validators
 42:      *
 43:      * @var array
 44:      */
 45:     protected $validators = array();
 46: 
 47:     /**
 48:      * Check if all of the element in the input is valid by all specified rules
 49:      *
 50:      * @param array|\Traversable $input The input to be validated
 51:      * @param array $rules The validation rules
 52:      * @return bool
 53:      */
 54:     public function __invoke($input, array $rules = array())
 55:     {
 56:         $rules && $this->storeOption('rules', $rules);
 57: 
 58:         return $this->isValid($input);
 59:     }
 60: 
 61:     /**
 62:      * {@inheritdoc}
 63:      */
 64:     protected function doValidate($input)
 65:     {
 66:         if (!is_array($input) && !$input instanceof \Traversable) {
 67:             $this->addError('notArray');
 68:             return false;
 69:         }
 70: 
 71:         $index = 1;
 72:         $validator = null;
 73:         foreach ($input as $item) {
 74:             foreach ($this->rules as $rule => $options) {
 75:                 if (!$this->validate->validateOne($rule, $item, $options, $validator)) {
 76:                     $this->validators[$index][$rule] = $validator;
 77:                 }
 78:             }
 79:             $index++;
 80:         }
 81: 
 82:         // Adds the placeholder message
 83:         if (count($this->validators)) {
 84:             $this->addError('invalid');
 85:             return false;
 86:         }
 87:         return true;
 88:     }
 89: 
 90:     /**
 91:      * {@inheritdoc}
 92:      */
 93:     public function getMessages($name = null)
 94:     {
 95:         $this->loadTranslationMessages();
 96:         $translator = $this->t;
 97: 
 98:         // Firstly, translates the item name (%name%'s %index% item)
 99:         // Secondly, translates "%name%" in the item name
100:         $name = $translator($translator($this->itemName), array(
101:             '%name%' => $translator($name ?: $this->name)
102:         ));
103: 
104:         $messages = array();
105:         foreach ($this->validators as $index => $validators) {
106:             /** @var $validator BaseValidator */
107:             foreach ($validators as $rule => $validator) {
108:                 // Lastly, translates "index" in the item name
109:                 $validator->setName($translator($name, array(
110:                     '%index%' => $index
111:                 )));
112:                 foreach ($validator->getMessages() as $option => $message) {
113:                     $messages[$rule . '.' . $option . '.' . $index] = $message;
114:                 }
115:             }
116:         }
117:         return $messages;
118:     }
119: }
120: 
Wei Framework API documentation generated by ApiGen