[Form][Twig] selectedchoice
Bonjour,
J'ai un formulaire de modification qui fonctionnait sous Sf2.0 mais plus sous Sf2.1 malgré les changements opérés selon le CHANGELOG (https://github.com/symfony/symfony/b...hemes-and-html).
Voici la version pour Sf2.0
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| {% block epn_resource_choice_widget %}
{% set options = choices %}
<select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}>
{# FIXME BUG le choix de la valeur null provoque une
erreur pour les lieux qui avait un parent avant #}
{% if empty_value is not none %}
<option value="">{{ empty_value|trans({}, translation_domain) }}</option>
{% endif %}
{{ _self.epn_resource_choice_options(roots, 0, form, choices) }}
</select>
{% endblock %}
{% macro epn_resource_choice_options(resources, level, form, choices) %}
{% for resource in resources %}
{# Déterminer s'il est sélectionné #}
{% set disabled = true %}
{% set selected = null %}
{% if choices[resource.id] is defined %}
{% set disabled = false %}
{% set selected = _form_is_choice_selected(form, choices[resource.id]) %}
{% endif %}
<option
value="{{ resource.id }}"
{% if selected %}selected="selected"{% endif %}
{% if disabled %}disabled="disabled"{% endif %}
>
{% for i in 0..level if i != 0 %}_{% endfor %}
{{ resource.name }}
</option>
{{ _self.epn_resource_choice_options(resource.children, level + 1, form, choices) }}
{% endfor %}
{% endmacro %} |
Et voici la version Sf2.1 (juste la macro, le reste ne change pas)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| {% macro epn_resource_choice_options(resources, level, form, choices) %}
{% for resource in resources %}
{# Déterminer s'il est sélectionné #}
{% set disabled = true %}
{% set selected = null %}
{% if choices[resource.id] is defined %}
{% set disabled = false %}
{% set selected = choices[resource.id] is selectedchoice(resource.id) %}
{% endif %}
<option
value="{{ resource.id }}"
{% if selected %}selected="selected"{% endif %}
{% if disabled %}disabled="disabled"{% endif %}
>
{% for i in 0..level if i != 0 %}_{% endfor %}
{{ resource.name }}
</option>
{{ _self.epn_resource_choice_options(resource.children, level + 1, form, choices) }}
{% endfor %}
{% endmacro %} |
La ligne problématique est la suivante :
Code:
{% set selected = choices[resource.id] is selectedchoice(resource.id) %}
Mais cette dernière ne sélectionne aucun choix.
Quand je mets selectedchoice('3') par exemple, à la place de selectedchoice(resource.id), j'ai bien la valeur sélectionnée.
Quel est la bonne syntaxe pour retrouver la valeur par défaut (celle qui est déjà renseignée dans l'objet que je veux modifier) à l'entrée du formulaire ?
Cordialement.