Revert "Form: Don't prevent disabled elements from getting overwritten.."

This reverts commit eb343009bb.

refs #2998
This commit is contained in:
Johannes Meyer 2017-10-23 13:58:04 +02:00
parent e914f121e4
commit d348d95e5e
1 changed files with 3 additions and 9 deletions

View File

@ -1102,22 +1102,21 @@ class Form extends Zend_Form
* *
* @param Zend_Form $form * @param Zend_Form $form
* @param array $defaults * @param array $defaults
* @param bool $ignoreDisabled
*/ */
protected function preserveDefaults(Zend_Form $form, array & $defaults, $ignoreDisabled = true) protected function preserveDefaults(Zend_Form $form, array & $defaults)
{ {
foreach ($form->getElements() as $name => $element) { foreach ($form->getElements() as $name => $element) {
if ((array_key_exists($name, $defaults) if ((array_key_exists($name, $defaults)
&& array_key_exists($name . static::DEFAULT_SUFFIX, $defaults) && array_key_exists($name . static::DEFAULT_SUFFIX, $defaults)
&& $defaults[$name] === $defaults[$name . static::DEFAULT_SUFFIX]) && $defaults[$name] === $defaults[$name . static::DEFAULT_SUFFIX])
|| (! $ignoreDisabled && $element->getAttrib('disabled')) || $element->getAttrib('disabled')
) { ) {
unset($defaults[$name]); unset($defaults[$name]);
} }
} }
foreach ($form->getSubForms() as $_ => $subForm) { foreach ($form->getSubForms() as $_ => $subForm) {
$this->preserveDefaults($subForm, $defaults, $ignoreDisabled); $this->preserveDefaults($subForm, $defaults);
} }
} }
@ -1144,11 +1143,6 @@ class Form extends Zend_Form
if (($frameUpload = (bool) $request->getUrl()->shift('_frameUpload', false))) { if (($frameUpload = (bool) $request->getUrl()->shift('_frameUpload', false))) {
$this->getView()->layout()->setLayout('wrapped'); $this->getView()->layout()->setLayout('wrapped');
} }
// To prevent a BC, this is here. The proper fix is to extend populate()
// and pass $ignoreDisabled through to preserveDefaults()
$this->create($formData)->preserveDefaults($this, $formData, false);
$this->populate($formData); // Necessary to get isSubmitted() to work $this->populate($formData); // Necessary to get isSubmitted() to work
if (! $this->getSubmitLabel() || $this->isSubmitted()) { if (! $this->getSubmitLabel() || $this->isSubmitted()) {
if ($this->isValid($formData) if ($this->isValid($formData)