Get one or more data values from input, and check for missing fields. Apply defaults if fields are missing.
If any required fields are missing, break the loop.
Evaluate the inputs against the validator chain.
If we got this far, the inputs for this rule pass validation.
  992         foreach ((array) $validatorRule[self::FIELDS] as $key => $field) {
   993             if (array_key_exists($field, $this->_data)) {
   994                 $data[$field] = $this->_data[$field];
   995             } 
else if (isset($validatorRule[self::DEFAULT_VALUE])) {
   997                 if (!is_array($validatorRule[self::DEFAULT_VALUE])) {
  1002                     if (isset($validatorRule[self::DEFAULT_VALUE][$key])) {
  1004                     } 
else if ($validatorRule[self::PRESENCE] == self::PRESENCE_REQUIRED) {
  1007                         $this->_missingFields[$validatorRule[
self::RULE]][] =
  1011             } 
else if ($validatorRule[self::PRESENCE] == self::PRESENCE_REQUIRED) {
  1012                 $this->_missingFields[$validatorRule[
self::RULE]][] =
  1020         if (isset($this->_missingFields[$validatorRule[self::RULE]]) && count($this->_missingFields[$validatorRule[self::RULE]]) > 0) {
  1027         if (count((array) $validatorRule[self::FIELDS]) > 1) {
  1028             if (!$validatorRule[self::ALLOW_EMPTY]) {
  1029                 $emptyFieldsFound = 
false;
  1030                 $errorsList       = array();
  1031                 $messages         = array();
  1033                 foreach (
$data as $fieldKey => $field) {
  1037                         $notEmptyValidator->setMessage($this->
_getNotEmptyMessage($validatorRule[self::RULE], $fieldKey));
  1040                     if (!$notEmptyValidator->isValid($field)) {
  1041                         foreach ($notEmptyValidator->getMessages() as $messageKey => 
$message) {
  1042                             if (!isset($messages[$messageKey])) {
  1048                         $errorsList[] = $notEmptyValidator->getErrors();
  1049                         $emptyFieldsFound = 
true;
  1053                 if ($emptyFieldsFound) {
  1054                     $this->_invalidMessages[$validatorRule[
self::RULE]] = $messages;
  1055                     $this->_invalidErrors[$validatorRule[
self::RULE]]   = array_unique(call_user_func_array(
'array_merge', $errorsList));
  1060             if (!$validatorRule[self::VALIDATOR_CHAIN]->
isValid(
$data)) {
  1065         } 
else if (count(
$data) > 0) {
  1067             $fieldNames = array_keys(
$data);
  1068             $fieldName = reset($fieldNames);
  1069             $field     = reset(
$data);
  1072             if (!is_array($field)) {
  1073                 $field = array($field);
  1079                 $notEmptyValidator->setMessage($this->
_getNotEmptyMessage($validatorRule[self::RULE], $fieldName));
  1082             if ($validatorRule[self::ALLOW_EMPTY]) {
  1086                 $validatorChain->addValidator($notEmptyValidator, 
true );
  1087                 $validatorChain->addValidator($validatorRule[self::VALIDATOR_CHAIN]);
  1090             foreach ($field as $key => 
$value) {
  1091                 if ($validatorRule[self::ALLOW_EMPTY]  &&  !$notEmptyValidator->isValid(
$value)) {
  1096                 if (!$validatorChain->isValid(
$value)) {
  1097                     if (isset($this->_invalidMessages[$validatorRule[self::RULE]])) {
  1098                         $collectedMessages = $this->_invalidMessages[$validatorRule[
self::RULE]];
  1100                         $collectedMessages = array();
  1103                     foreach ($validatorChain->getMessages() as $messageKey => 
$message) {
  1104                         if (!isset($collectedMessages[$messageKey])) {
  1105                             $collectedMessages[$messageKey] = 
$message;
  1111                     $this->_invalidMessages[$validatorRule[
self::RULE]] = $collectedMessages;
  1112                     if (isset($this->_invalidErrors[$validatorRule[self::RULE]])) {
  1113                         $this->_invalidErrors[$validatorRule[
self::RULE]] = array_merge($this->_invalidErrors[$validatorRule[self::RULE]],
  1114                                                                                         $validatorChain->getErrors());
  1116                         $this->_invalidErrors[$validatorRule[
self::RULE]] = $validatorChain->getErrors();
  1118                     unset($this->_validFields[$fieldName]);
  1120                     if ($validatorRule[self::BREAK_CHAIN]) {
  1133         foreach ((array) $validatorRule[self::FIELDS] as $field) {
  1134             if (array_key_exists($field, 
$data)) {
  1135                 $this->_validFields[$field] = 
$data[$field];