|
|
@@ -2319,22 +2319,19 @@ class Zend_Form implements Iterator, Countable, Zend_Validate_Interface
|
|
|
*/
|
|
|
public function getMessages($name = null, $suppressArrayNotation = false)
|
|
|
{
|
|
|
- if ((null !== $name) && isset($this->_elements[$name])) {
|
|
|
- return $this->getElement($name)->getMessages();
|
|
|
- }
|
|
|
-
|
|
|
- if ((null !== $name) && isset($this->_subForms[$name])) {
|
|
|
- return $this->getSubForm($name)->getMessages(null, true);
|
|
|
- }
|
|
|
-
|
|
|
- $arrayKeys = array();
|
|
|
- foreach ($this->getSubForms() as $key => $subForm) {
|
|
|
- $array = $this->_getArrayName($subForm->getElementsBelongTo());
|
|
|
- if (!empty($array)) {
|
|
|
- if ($name == $array) {
|
|
|
- return $subForm->getMessages(null, true);
|
|
|
+ if (null !== $name) {
|
|
|
+ if (isset($this->_elements[$name])) {
|
|
|
+ return $this->getElement($name)->getMessages();
|
|
|
+ } else if (isset($this->_subForms[$name])) {
|
|
|
+ return $this->getSubForm($name)->getMessages(null, true);
|
|
|
+ }
|
|
|
+ foreach ($this->getSubForms() as $key => $subForm) {
|
|
|
+ if ($subForm->isArray()) {
|
|
|
+ $belongTo = $subForm->getElementsBelongTo();
|
|
|
+ if ($name == $this->_getArrayName($belongTo)) {
|
|
|
+ return $subForm->getMessages(null, true);
|
|
|
+ }
|
|
|
}
|
|
|
- $arrayKeys[$key] = $subForm->getElementsBelongTo();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2353,14 +2350,15 @@ class Zend_Form implements Iterator, Countable, Zend_Validate_Interface
|
|
|
}
|
|
|
|
|
|
foreach ($this->getSubForms() as $key => $subForm) {
|
|
|
- $fMessages = $subForm->getMessages(null, true);
|
|
|
- if (!empty($fMessages)) {
|
|
|
- if (array_key_exists($key, $arrayKeys)) {
|
|
|
- $fMessages = $this->_attachToArray($fMessages, $arrayKeys[$key]);
|
|
|
- $messages = array_merge($messages, $fMessages);
|
|
|
+ $merge = $subForm->getMessages(null, true);
|
|
|
+ if (!empty($merge)) {
|
|
|
+ if (!$subForm->isArray()) {
|
|
|
+ $merge = array($key => $merge);
|
|
|
} else {
|
|
|
- $messages[$key] = $fMessages;
|
|
|
+ $merge = $this->_attachToArray($merge,
|
|
|
+ $subForm->getElementsBelongTo());
|
|
|
}
|
|
|
+ $messages = array_merge_recursive($messages, $merge);
|
|
|
}
|
|
|
}
|
|
|
|