5

To Create a text input box I used folling code in zend framework2

use Zend\Form\Form;

class Loginform extends Form
{
    public function __construct()
    {
           $this->add(array(            
            'name' => 'usernames',
            'attributes' =>  array(
                'id' => 'usernames',                
                'type' => 'text',
            ),
            'options' => array(
                'label' => 'User Name',
            ),
        ));       
    }
}

and I can populate the values in controller action using

$form = new Loginform();
$form->get('usernames')->setAttribute('value', 'user 1');

Any idea how can I do the same for Selection/drop down box in zf2?

Ref: zend framework 2 documentation

Developer
  • 25,073
  • 20
  • 81
  • 128

4 Answers4

14

Check the API (the docs are terrible, so check the code).

Use the Zend\Form\Element\Select class and set the options attribute like so:

$element->setAttribute('options', array(
    'key' => 'val',
    ...
));

Output the element using the FormRow or FormSelect view helper.

This site is also a good source for examples and information: http://zf2.readthedocs.org/en/latest/modules/zend.form.quick-start.html

Example:

$this->add(array(     
    'type' => 'Zend\Form\Element\Select',       
    'name' => 'usernames',
    'attributes' =>  array(
        'id' => 'usernames',                
        'options' => array(
            'test' => 'Hi, Im a test!',
            'Foo' => 'Bar',
        ),
    ),
    'options' => array(
        'label' => 'User Name',
    ),
));    

You can also assign the options in the controller if you need to, as shown above.

thewildandy
  • 318
  • 2
  • 8
Daniel M
  • 3,369
  • 20
  • 30
4
$form = new Loginform();      
$form->get('usernames')->setValueOptions($usernames );

$usernames is an array

Ref Click Here

Saurabh Chandra Patel
  • 12,712
  • 6
  • 88
  • 78
2

Zend Framework 2.2 , select options have been moved into 'options' instead of 'attributes' so above code will be changed too

$this->add(array(     
    'type' => 'Zend\Form\Element\Select',       
    'name' => 'usernames',
    'attributes' =>  array(
       'id' => 'usernames'              
    ),
    'options' => array(
        'label' => 'User Name',
        'options' => array(
            'test' => 'Hi, Im a test!',
            'Foo' => 'Bar',
        ),
    ),
));
Rickard
  • 620
  • 2
  • 7
  • 23
Mr Coder
  • 8,169
  • 5
  • 45
  • 74
2

If you want to do it in controller then do it like this way

$form->get('ELEMENT_NAME')->setAttribute('options' ,array('KEY' => 'VALUE'));
Purvesh
  • 628
  • 7
  • 12