[英]Symfony2 form theming for individual field
我正在使用Symfony2表单构建器和bootstrap_3_horizontal_layout.html.twig
主题(这是我所有表单的默认表单)构建表单,但是我需要自定义特定字段content_owner
的布局。 这是一个multiple select
,因此我正在使用以下代码覆盖默认模板:
{% block choice_widget_collapsed %}
<div class="col-md-4"><div class="form-group">{{- block('form_widget_compound') -}}</div> </div>
{% endblock %}
并在new.html.twig中(表单呈现的位置):
{% for name, child in form.content if name != 'graphics' %}
{{ form_row(child) }}
{% endfor %}
{{ form_widget(form.content.content_owner) }}
我得到的输出(在萤火虫中):
<div class="form-group">
<label for="form_content_content_owner" class="col-sm-2 control-label">Content owner</label>
<div class="col-sm-10">
<div class="col-md-4">
<div class="form-group">
<div id="form_content_content_owner">
<!--and it is blank. no choice widget-->
</div>
</div>
</div>
</div>
</div>
该代码破坏了我所有的choice widgets
,即没有select
可见。 我究竟做错了什么?
所需的输出:
<div class="col-sm-4">
<div class="form-group">
<label for="form_content_content_owner" class="col-sm-2 control-label">Content owner</label>
<div class="col-sm-10">
<select class="form-control" name="form[content][content_owner]" id="form_content_content_owner">
<option value=""></option>
<option value="1">Anupam</option>
<!--option value goes on-->
<option value="31">World Com</option>
</select>
</div>
</div>
</div>
我想你会发现choice_widget_collapsed
块是一个内部渲染form_widget_compound
块,所以你已经设置了一个无限循环。
尝试将调试器断点添加到Symfony\\Component\\Form\\FormRenderer.php
中的第250行附近,此代码位于以下位置:
$blockName = $blockNameHierarchy[$hierarchyLevel];
查看$blockName
在每次迭代期间取什么值。 到达要渲染的字段后,您应该看到正在调用的块以及调用的顺序。 这可以帮助您更好地了解模板中正在发生的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.