rii
rii

Reputation: 57

How i get the real value in select form zf2

I need to get the real value, instead of the number position of a Select form field I explain it with one example:

first in the form

$procesa=new Querys();  
$datosAsignaturas=$procesa->getDatosAsignaturas();
$groups = array();
foreach ($datosAsignaturas as $id => $list) {
    $groups[$id] =$list["nombreA"];
}
$selection= $factory-> createElement(array(
    'type' => 'Zend\Form\Element\Select',       
    'name' => 'subjects',
    'attributes' =>  array(
        'id' => 'subjects',                
        'options' => $groups
    ), 
)); 

$this->add($selection);

Second, the view

<div class="form_element">
        <?php $element = $form->get('subjects');
         ?>
        <label>
            <?php echo $element->getOption('value'); ?>
        </label>
        <?php echo $this->formSelect($element); ?>
    </div>

third ["subjects"]=> string(1) "1"

i need something like this ["subjects"]=> string(1) "Maths"

Upvotes: 0

Views: 1844

Answers (2)

Remi Thomas
Remi Thomas

Reputation: 1528

Maybe you mean :

<div class="form_element">
    <?php $element = $form->get('subjects');
     ?>
    <label>
        <?php echo $element->getOption('label'); //-------- label instead value?>
    </label>
    <?php echo $this->formSelect($element); ?>
</div>

And about the form

$procesa=new Querys();  
$datosAsignaturas=$procesa->getDatosAsignaturas();
$groups = array();
foreach ($datosAsignaturas as $id => $list) {
    $groups[$id] =$list["nombreA"];
}
$selection= $factory-> createElement(array(
    'type' => 'Zend\Form\Element\Select',       
    'name' => 'subjects',
    'attributes' =>  array(
        'id' => 'subjects',                
        'options' => $groups
    ), 
    'options'=>array(
       'label'=>"Your label",
       'description' => 'your description',
       'value_options' => array(
         '0' => 'French',
         '1' => 'English',
         '2' => 'Japanese',
         '3' => 'Chinese',
       ),
     )
)); 

$this->add($selection);

Upvotes: 1

Sam
Sam

Reputation: 16455

Proper assignement of values to a Zend\Form\Element\Select is through the means of value_options inside options or using the element function setValueOptions(). Here a simple example:

$form->add(array(
    'type' => 'Zend\Form\Element\Select',
    'name' => 'language',
    'options' => array(
        'label' => 'Which is your mother tongue?',
        'empty_option' => 'Please choose your language',
        'value_options' => array(
            '0' => 'French',
            '1' => 'English',
            '2' => 'Japanese',
            '3' => 'Chinese',
        ),
    )
));

Now if you need to access the value options like this, you simply call getValueOptions() on the element and you'll receive exactly the same array as above. Then you could do something like this (which I'm assuming is what you're trying to do):

$elemLanguage = $form->get('language');

echo "<select name='{$elemLanguage->getName()}'>\n";
foreach($elemLanguage->getValueOptions() as $id => $language) {
    echo "<option value='{$id}'>{$id} - {$language}</option>\n";
}
echo '</select>';

Upvotes: 1

Related Questions