Beispiel #1
0
 public function testRemovingFormItemsShouldNotRaiseExceptionsDuringIteration()
 {
     $this->setupElements();
     $bar = $this->form->bar;
     $this->form->removeElement('bar');
     try {
         foreach ($this->form as $item) {
         }
     } catch (Exception $e) {
         $this->fail('Exceptions should not be raised by iterator when elements are removed; error message: ' . $e->getMessage());
     }
     $this->form->addElement($bar);
     $this->form->addDisplayGroup(array('baz', 'bar'), 'bazbar');
     $this->form->removeDisplayGroup('bazbar');
     try {
         foreach ($this->form as $item) {
         }
     } catch (Exception $e) {
         $this->fail('Exceptions should not be raised by iterator when elements are removed; error message: ' . $e->getMessage());
     }
     $subForm = new Zend_Form_SubForm();
     $subForm->addElements(array('foo' => 'text', 'bar' => 'text'));
     $this->form->addSubForm($subForm, 'page1');
     $this->form->removeSubForm('page1');
     try {
         foreach ($this->form as $item) {
         }
     } catch (Exception $e) {
         $this->fail('Exceptions should not be raised by iterator when elements are removed; error message: ' . $e->getMessage());
     }
 }
 /**
  * Explicitly removes and re-adds elements to the provided form to
  * ensure that the form re-builds the element order.
  *
  * Due to a bug this is required if the order of an element is
  * changed after the internal form index was created:
  * {@link http://framework.zend.com/issues/browse/ZF-9946}
  *
  * @param Zend_Form $form
  * @param array(Zend_Form_Element|Zend_Form|Zend_Form_DisplayGroup) $elements
  */
 protected function reAssignElements(Zend_Form $form, array $elements)
 {
     $elementsByType = $this->categorizeElements($elements);
     foreach ($elementsByType['elements'] as $element) {
         /* @var $element Zend_Form_Element */
         $form->removeElement($element->getName());
         $form->addElement($element);
     }
     foreach ($elementsByType['subForms'] as $subForm) {
         /* @var $subForm Zend_Form */
         $form->removeSubForm($subForm->getName());
         $form->addSubForm($subForm, $subForm->getName());
     }
     foreach ($elementsByType['displayGroups'] as $displayGroup) {
         /* @var $displayGroup Zend_Form_DisplayGroup */
         $form->removeDisplayGroup($displayGroup->getName());
         $form->addDisplayGroup($displayGroup->getElements(), $displayGroup->getName());
     }
 }