grz*_*hoo 9 php symfony-forms symfony twig
如何在Symfony 2.6中的Twig中渲染单个字段(单个无线电/复选框输入字段)?
假设我有一个简单的形式:
class TransportType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('transport', 'choice', array(
'choices' => array(
'road' => 'Car/bus',
'train' => 'Train',
),
'expanded' => true,
'multiple' => false
));
}
Run Code Online (Sandbox Code Playgroud)
在以前的Symfony2版本中,我可以使用:
{{ form_widget(form.transport.road) }}
{{ form_widget(form.transport.train) }}
Run Code Online (Sandbox Code Playgroud)
渲染单个单选按钮,但它似乎不再起作用.我知道我可以用:
{{ form_widget(form.transport[0]) }}
{{ form_widget(form.transport[1]) }}
Run Code Online (Sandbox Code Playgroud)
但它的灵活性较差.当然,我可以迭代收集并检查名称,但这似乎是不必要的麻烦.是不是有更简单的方法?
我试过offsetGet(应该这样return a child by name),但它也适用于数组索引.
小智 10
试试这个:
{% for key, transportItem in form.transport.children %}
{{ form_widget(transportItem) }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
看来最新版本的 Symfony(即 >= 2.6)不可能做到这一点。我记得在以前的版本中,当表单生成器显示数组时choices,它会生成如下选择:
<select>
<option value="road">Car/Bus</option>
<option value="train">Train</option>
</select>
Run Code Online (Sandbox Code Playgroud)
然而,这在最近的版本中已更改为以下内容:
<select>
<option value="0">Car/Bus</option>
<option value="1">Train</option>
</select>
Run Code Online (Sandbox Code Playgroud)
value然后,所选选项将被标准化,然后您将获得在课堂上设置的期望值FormType。您可以在此处阅读有关标准化的更多信息。
另外,如果您{{ debug(form.transport) }}使用 Symfony >= 2.6 编写,您可以看到表单/字段数组以及可以从中使用的内容。
| 归档时间: |
|
| 查看次数: |
9687 次 |
| 最近记录: |