Esempio n. 1
0
 /**
  * @expectedException InvalidArgumentException
  */
 public function testGetName()
 {
     $element = new Element('test[]');
     $this->assertEquals('test', $element->getInputName());
     $this->assertEquals('test[]', $element->setMultiple(true)->getInputName());
     $element = new Element('test', array(), new \ArrayObject(array('opt1' => 'value')));
     $this->assertEquals('test', $element->getName());
     $this->assertEquals('test', $element->getNameFromMixed(array('name' => 'test')));
     $this->assertEquals('test', $element->getNameFromMixed('test'));
     $this->assertEquals('test', $element->getNameFromMixed($element));
     $element = new Element();
     $this->assertEquals(null, $element->getName());
     $element->setName('name');
     $this->assertEquals('name', $element->getName());
     $element = new Element();
     $this->assertEquals(null, $element->getInputName());
     $this->assertEquals(null, $element->setMultiple(true)->getInputName());
     $element->setName('test_name');
     $this->assertEquals('test_name[]', $element->setMultiple(true)->getInputName());
     $this->assertEquals('test_name', $element->setMultiple(false)->getInputName());
     $fieldset = new Fieldset('fieldset');
     $fieldset->add($element);
     $form = new Fieldset('form[]');
     $form->add($fieldset);
     $this->assertEquals('fieldset[test_name]', $element->setMultiple(false)->getInputName());
     $this->assertEquals('fieldset[test_name][]', $element->setMultiple(true)->getInputName());
     $form->setMultiple(true);
     $this->assertEquals('form[][fieldset][test_name]', $element->setMultiple(false)->getInputName());
     $this->assertEquals('form[][fieldset][test_name][]', $element->setMultiple(true)->getInputName());
     $form->setMultiple(false);
     $fieldset->setMultiple(true);
     $this->assertEquals('fieldset[][test_name]', $element->setMultiple(false)->getInputName());
     $this->assertEquals('fieldset[][test_name][]', $element->setMultiple(true)->getInputName());
     $form->setMultiple(true);
     $this->assertEquals('form[][fieldset][][test_name]', $element->setMultiple(false)->getInputName());
     $this->assertEquals('form[][fieldset][][test_name][]', $element->setMultiple(true)->getInputName());
     // exception
     $this->assertEquals('test', $element->getNameFromMixed(new \stdClass()));
 }
Esempio n. 2
0
 /**
  * Configure an element based on the provided specification
  *
  * Specification can contain any of the following:
  * - type: the Element class to use; defaults to \Zend\Form\Element
  * - name: what name to provide the element, if any
  * - options: an array, Traversable, or ArrayAccess object of element options
  * - attributes: an array, Traversable, or ArrayAccess object of element
  *   attributes to assign
  *
  * @param \App\Form\Element|\App\Form\Element $element
  * @param  array|Traversable|ArrayAccess               $spec
  * @return Element
  */
 public function configureElement(Element $element, $spec)
 {
     $spec = $this->validateSpecification($spec, __METHOD__);
     $name = isset($spec['name']) ? $spec['name'] : null;
     $options = isset($spec['options']) ? $spec['options'] : null;
     $attributes = isset($spec['attributes']) ? $spec['attributes'] : null;
     if ($name !== null && $name !== '') {
         $element->setName($name);
     }
     if (is_array($options) || $options instanceof Traversable || $options instanceof ArrayAccess) {
         $element->setOptions($options);
     }
     if (is_array($attributes) || $attributes instanceof Traversable || $attributes instanceof ArrayAccess) {
         $element->setAttributes($attributes);
     }
     return $element;
 }