Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

zf2 create select/drop down box and populate options in controller?

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

like image 751
Developer Avatar asked Sep 06 '12 13:09

Developer


2 Answers

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.

like image 61
Daniel M Avatar answered Oct 19 '22 16:10

Daniel M


$form = new Loginform();      
$form->get('usernames')->setValueOptions($usernames );

$usernames is an array

Ref Click Here

like image 45
Saurabh Chandra Patel Avatar answered Oct 19 '22 18:10

Saurabh Chandra Patel