Ger*_*rdo 3 radio-button symfony twig
嗨,我是Symfony的新手,我有以下问题:
我正在实现一个速率表单,所以我添加了一个单选按钮组,因此选择1到5之间的值.想法是显示五个星而不是经典的单选按钮,所以我需要为每个输入字段添加一个类.
问题是symfony将类添加到空洞无线电组而不是每个输入.
我搜索了一个解决方案,我找到的最接近的提示是:
{% block choice_widget_expanded %}
{% spaceless %}
<div {{ block('widget_container_attributes') }}>
{% for child in form %}
{{ form_widget(child, {'attr': {'class': 'rating-input'}}) }}
{% endfor %}
</div>
{% endspaceless %}
{% endblock choice_widget_expanded %}
Run Code Online (Sandbox Code Playgroud)
上面的代码还将无线电组包装在具有"rating-input"类的div上.
这是控制器中的测试表单代码:
$form->createFormBuilder()
->add('rate', 'choice', array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5), 'expanded' => true, 'multiple' => false))
->add('save', 'submit')
->getForm();
Run Code Online (Sandbox Code Playgroud)
这是我得到的html的示例图像:
任何想法我怎么能实现我想要的?提前致谢.
好的,这就是我的所作所为.我使用表单主题来覆盖每个输入的显示方式.要做到这一点,你必须添加一个"form_theme form self"标签,并覆盖要在其中呈现表单的树枝中的choice_widget块.
{% extends ::base.html.twig %}
{% form_theme form _self %}
{% block choice_widget_expanded %}
<div {{ block('widget_container_attributes') }}>
{% for child in form %}
{{ form_widget(child, {'attr': 'star'}) }}
{{ form_label(child) }}
{% endfor %}
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
无论如何,谢谢你的答案.