bug #35200 [TwigBridge] do not render preferred choices as selected (xabbuh)
This PR was merged into the 4.4 branch.
Discussion
----------
[TwigBridge] do not render preferred choices as selected
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | https://github.com/symfony/symfony/issues/35135#issuecomment-570607719
| License | MIT
| Doc PR |
Commits
-------
c5b8190424
do not render preferred choices as selected
This commit is contained in:
commit
b9cc0c8985
@ -65,12 +65,14 @@
|
|||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{%- if preferred_choices|length > 0 -%}
|
{%- if preferred_choices|length > 0 -%}
|
||||||
{% set options = preferred_choices %}
|
{% set options = preferred_choices %}
|
||||||
|
{% set render_preferred_choices = true %}
|
||||||
{{- block('choice_widget_options') -}}
|
{{- block('choice_widget_options') -}}
|
||||||
{%- if choices|length > 0 and separator is not none -%}
|
{%- if choices|length > 0 and separator is not none -%}
|
||||||
<option disabled="disabled">{{ separator }}</option>
|
<option disabled="disabled">{{ separator }}</option>
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{%- set options = choices -%}
|
{%- set options = choices -%}
|
||||||
|
{%- set render_preferred_choices = false -%}
|
||||||
{{- block('choice_widget_options') -}}
|
{{- block('choice_widget_options') -}}
|
||||||
</select>
|
</select>
|
||||||
{%- endblock choice_widget_collapsed -%}
|
{%- endblock choice_widget_collapsed -%}
|
||||||
@ -83,7 +85,7 @@
|
|||||||
{{- block('choice_widget_options') -}}
|
{{- block('choice_widget_options') -}}
|
||||||
</optgroup>
|
</optgroup>
|
||||||
{%- else -%}
|
{%- else -%}
|
||||||
<option value="{{ choice.value }}"{% if choice.attr %}{% with { attr: choice.attr } %}{{ block('attributes') }}{% endwith %}{% endif %}{% if choice is selectedchoice(value) %} selected="selected"{% endif %}>{{ choice_translation_domain is same as(false) ? choice.label : choice.label|trans({}, choice_translation_domain) }}</option>
|
<option value="{{ choice.value }}"{% if choice.attr %}{% with { attr: choice.attr } %}{{ block('attributes') }}{% endwith %}{% endif %}{% if not render_preferred_choices|default(false) and choice is selectedchoice(value) %} selected="selected"{% endif %}>{{ choice_translation_domain is same as(false) ? choice.label : choice.label|trans({}, choice_translation_domain) }}</option>
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{%- endblock choice_widget_options -%}
|
{%- endblock choice_widget_options -%}
|
||||||
|
@ -160,12 +160,14 @@
|
|||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if preferred_choices|length > 0 -%}
|
{%- if preferred_choices|length > 0 -%}
|
||||||
{% set options = preferred_choices %}
|
{% set options = preferred_choices %}
|
||||||
|
{% set render_preferred_choices = true %}
|
||||||
{{- block('choice_widget_options') -}}
|
{{- block('choice_widget_options') -}}
|
||||||
{% if choices|length > 0 and separator is not none -%}
|
{% if choices|length > 0 and separator is not none -%}
|
||||||
<option disabled="disabled">{{ separator }}</option>
|
<option disabled="disabled">{{ separator }}</option>
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{% set options = choices -%}
|
{% set options = choices -%}
|
||||||
|
{%- set render_preferred_choices = false -%}
|
||||||
{{- block('choice_widget_options') -}}
|
{{- block('choice_widget_options') -}}
|
||||||
</select>
|
</select>
|
||||||
{%- endblock choice_widget_collapsed %}
|
{%- endblock choice_widget_collapsed %}
|
||||||
|
@ -546,6 +546,31 @@ abstract class AbstractBootstrap3LayoutTest extends AbstractLayoutTest
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSingleChoiceWithSelectedPreferred()
|
||||||
|
{
|
||||||
|
$form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
|
||||||
|
'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b'],
|
||||||
|
'preferred_choices' => ['&a'],
|
||||||
|
'multiple' => false,
|
||||||
|
'expanded' => false,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertWidgetMatchesXpath($form->createView(), ['separator' => '-- sep --', 'attr' => ['class' => 'my&class']],
|
||||||
|
'/select
|
||||||
|
[@name="name"]
|
||||||
|
[@class="my&class form-control"]
|
||||||
|
[not(@required)]
|
||||||
|
[
|
||||||
|
./option[@value="&a"][not(@selected)][.="[trans]Choice&A[/trans]"]
|
||||||
|
/following-sibling::option[@disabled="disabled"][not(@selected)][.="-- sep --"]
|
||||||
|
/following-sibling::option[@value="&a"][@selected="selected"][.="[trans]Choice&A[/trans]"]
|
||||||
|
/following-sibling::option[@value="&b"][.="[trans]Choice&B[/trans]"]
|
||||||
|
]
|
||||||
|
[count(./option)=4]
|
||||||
|
'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testSingleChoiceWithPreferredAndNoSeparator()
|
public function testSingleChoiceWithPreferredAndNoSeparator()
|
||||||
{
|
{
|
||||||
$form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
|
$form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&a', [
|
||||||
|
Reference in New Issue
Block a user