我希望在它们的标签内呈现类型为radio的输入,因为我想使用flexbox将它们之间的空格对齐。
下面是RegistrationType类的一部分
...
->add('gender', ChoiceType::class, [
'required' => true,
'expanded' => true,
'multiple' => false,
'label' => false,
'choices' => [
'male' => 'male',
'female' => 'female',
'other' => 'other',
],
])该类的配置选项是默认的:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}我想获得给定的结果:
<div style="display:flex; flex-direction:row; justify-content:space-between; width:22rem;">
<label>
<input type="radio"
name="registration_form[gender]"
required="required"
class="required"
value="male">
Male
</label>
<label>
<input type="radio"
name="registration_form[gender]"
required="required"
class="required"
value="female">
Female
</label>
<label>
<input type="radio"
name="registration_form[gender]"
required="required"
class="required"
value="other">
Other
</label>
</div>
有没有办法做到这一点?
发布于 2020-09-02 01:23:40
与这里的accepted answer类似,并且受Field Variables of the ChoiceType类的支持,您可以访问.choices属性并对其进行循环,如下所示:
<div style="display:flex; flex-direction:row; justify-content:space-between; width:22rem;">
{{ form_label(form.gender) }}
<div>
{% for key,val in form.gender.vars.choices %}
<label>
<input type="radio"
name="{{ form.gender.vars.full_name }}"
required="required"
class="required"
value="{{ val.value }}"
/>
{{ val.label | trans }} />
{% endfor %}
</div>
</div>还有一些更优雅的定制方法,比如创建或覆盖Form Theme,或者使用twig macro来保持代码的干爽。如果你走表单主题路线,看看属性block的使用方式--我们在上面的例子中绕过了它提供的大部分实用程序。
https://stackoverflow.com/questions/63692182
复制相似问题