我正在使用Symfony 2表格创建扩展选项列表,使用单选按钮选择是以匿名用户身份发布博客还是匿名用户(显示用户名)。
BlogType.php文件中的表单字段类型定义如下所示(我从控制器传递了带有值的选项,但它与我的问题无关):
$builder->add('is_anonymous', 'choice', array(
'choices' => $options['is_anonymous'],
'required' => true,
'multiple' => false,
'expanded' => true,
));
我尝试通过在模板twig文件中执行以下操作来应用"How to customize an Individual field" section from the Symfony2 Cookbook:
<div class="post_as">
{{ form_label(form.is_anonymous, 'Post as:') }}
{{ form_errors(form.is_anonymous) }}
{% form_theme form _self %}
{% block _factor_is_anonymous_0_label %}
<img src="/images/anonymous-32.png"/>
{{ block ('form_label') }}
{% endblock %}
{% block _factor_is_anonymous_1_label %}
<img src="/images/user-32.png"/>
{{ block ('form_label') }}
{% endblock %}
{{ form_widget(form.is_anonymous) }}
</div>
然而,上面的结果是两个图像显示在选择列表之前,除了每个显示在其相应的单选按钮旁边,如结果html中所示:
<div class="post_as">
<label class="required">Post as:</label>
<img src="/images/anonymous-32.png"/>
<img src="/images/user-32.png"/>
<div id="factor_is_anonymous">
<input type="radio" id="factor_is_anonymous_0" name="factor[is_anonymous]" required="required" value="true" />
<img src="/images/anonymous-32.png"/>
<label for="factor_is_anonymous_0" class="required">Anonymous Collaborator</label>
<input type="radio" id="factor_is_anonymous_1" name="factor[is_anonymous]" required="required" value="false" />
<img src="/images/user-32.png"/>
<label for="factor_is_anonymous_1" class="required">User Name</label>
</div>
</div>
如何摆脱两次显示的图像?我认为这与在整体选择“行”的渲染中显示的图像以及在两个选择中的每一个的渲染中有关。我尝试了各种组合来显示整体标签而不是,但我一直无法解决问题......任何人都可以帮忙吗?感谢...
答案 0 :(得分:0)
您需要移动任何其他块的外部的表单块的定义。即,将这些线移到任何其他块之外,最好是在文件的开头或结尾
{% block _factor_is_anonymous_0_label %}
<img src="/images/anonymous-32.png"/>
{{ block ('form_label') }}
{% endblock %}
{% block _factor_is_anonymous_1_label %}
<img src="/images/user-32.png"/>
{{ block ('form_label') }}
{% endblock %}