Introduction
For my personal project i use
- Symfony v4.2
- PHP 7.2.12
Problem
I can not figure out how to make ChoiceType element display IDs and EMAILs as HTML SELECT option values and indexes.
Example
The picture displays current state of html select with data (id and email) from database.
Code
Array of data from database
($this->userChoices)
array:4 [
0 => array:2 [
"id" => 7
"email" => "[email protected]"
]
1 => array:2 [
"id" => 8
"email" => "[email protected]"
]
2 => array:2 [
"id" => 5
"email" => "[email protected]"
]
3 => array:2 [
"id" => 6
"email" => "[email protected]"
]
]
What i am getting
<select id="my-select" name="my-select" class="form-control">
<optgroup label="0">
<option value="7">7</option>
<option value="[email protected]">[email protected]</option>
</optgroup>
<optgroup label="1">
<option value="8">8</option>
<option value="[email protected]">[email protected]</option>
</optgroup>
<optgroup label="2">
<option value="5">5</option>
<option value="[email protected]">[email protected]</option>
</optgroup>
<optgroup label="3">
<option value="6">6</option>
<option value="[email protected]">[email protected]</option>
</optgroup>
</select>
What i want to get
<select id="my-select">
<option value=""> Please choose an option </option>
<option value="7">[email protected]</option>
<option value="8">[email protected]</option>
<option value="5">[email protected]</option>
<option value="6">[email protected]</option>
</select>
Relevant part of
myChoiceType
->add('selectUser', ChoiceType::class,
[
'choices' => $this->userChoices,
'choice_value' => function ($choice)
{
return $choice;
},
'choice_label' => function ($value)
{
return $value;
},
'mapped' => false,
'expanded' => false,
'multiple' => false,
]
)
Finally
What am i doing wrong?
How to get ChoiceType display data in html select in the manner i want it to?
Thank you for ideas!
