8000 Form choice: choices group break on 2.7.1 · Issue #15192 · symfony/symfony · GitHub
[go: up one dir, main page]

Skip to content

Form choice: choices group break on 2.7.1 #15192

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jamyouss opened this issue Jul 3, 2015 · 4 comments
Closed

Form choice: choices group break on 2.7.1 #15192

jamyouss opened this issue Jul 3, 2015 · 4 comments
Labels

Comments

@jamyouss
Copy link
jamyouss commented Jul 3, 2015

Hi,

I recently upgrade from 2.6.9 to 2.7.1 and found a issue when use the choice form type.

I define an array of choice and add the form type :

$choices = array(
    "Fitness" => array(
        2 => "Sous activité A",
        3 => "Sous activité B",
        4 => "Sous activité C",
    ),
    "Taïchi" => array(
        6 => "Sous activité D",
        7 => "Sous activité B",
        8 => "Sous activité F",
    ),
);

$builder
    ->add('activity', 'choice', array(
        'label' => 'Activité',
        'choices' => $choices,
        'empty_value' => 'Toutes',
    ))
;

This works fine in 2.6.9 but not in 2.7.1.
The id of sub-option "Sous activité B" of group "Fitness" is wrong.
It product only there are sub-options with same name in different group

Here with the version 2.6.9

<select id="filter_activity" name="lesson_filter[activity]">
    <option value="">Toutes</option>
    <optgroup label="Fitness">
        <option value="2">Sous activité A</option>
        <option value="3">Sous activité B</option>
        <option value="4">Sous activité C</option>
    </optgroup>
    <optgroup label="Taïchi">
        <option value="6">Sous activité D</option>
        <option value="7">Sous activité B</option>
        <option value="8">Sous activité E</option>
    </optgroup>
</select>

Here with the version 2.7.1

<select id="filter_activity" name="lesson_filter[activity]">
    <option value="">Toutes</option>
    <optgroup label="Fitness">
        <option value="2">Sous activité A</option>
        <option value="7">Sous activité B</option>
        <option value="4">Sous activité C</option>
    </optgroup>
    <optgroup label="Taïchi">
        <option value="6">Sous activité D</option>
        <option value="7">Sous activité B</option>
        <option value="8">Sous activité E</option>
    </optgroup>
</select>
@Tobion
Copy link
Contributor
Tobion commented Jul 3, 2015

Should be fixed by #15061

@xabbuh xabbuh added the Form label Jul 3, 2015
@jamyouss
Copy link
Author

I just re-tested now and it seems that it's not fixed in version 2.7.1 :-(

Here is a basic code to reproduce the issue.
In the controller:

    /**
     * @Route("/")
     * @Template()
     */
    public function indexAction()
    {
        $choices = array(
            "Fitness" => array(
                1 => "Sous activité A",
                2 => "Sous activité B",
                3 => "Sous activité C",
                ),
            "Taïchi" => array(
                4 => "Sous activité D",
                5 => "Sous activité B",
                6 => "Sous activité F",
                ),
            );

        $form = $this
                    ->createFormBuilder()
                    ->add('activity', 'choice', array(
                        'label' => 'Activité',
                        'choices' => $choices,
                        'empty_value' => 'Toutes',
                    ))
                    ->getForm()
                ;

        return array(
            'form' => $form->createView(),
        );
    }

In twig template:

{{ form_widget(form.activity) }}

It seems that this bug appears only when there is identical labels (here "Sous activité B").

@jamyouss
Copy link
Author

it produce also with a simple list like this:

$choices = array(
    1 => "Sous activité A",
    2 => "Sous activité B",
    3 => "Sous activité C",
    4 => "Sous activité D",
    5 => "Sous activité B",
    6 => "Sous activité F",
);

I think it's due to the method flattenFlipped of DefaultChoiceListFactory class.

@webmozart
Copy link
Contributor

This is fixed in Symfony 2.7.2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants
0