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