1

我正在使用 Symfony 2 表单创建一个扩展的选择列表,使用单选按钮选择是否以匿名用户身份发布博客(显示用户名)。

BlogType.php 文件中的表单字段类型定义如下所示(我从控制器传递选项及其值,但它应该与我的问题无关):

$builder->add('is_anonymous', 'choice', array(
    'choices'   => $options['is_anonymous'],
    'required'  => true,
    'multiple'  => false,
    'expanded'  => true,
));

我尝试通过在模板树枝文件中执行以下操作来应用 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> 

如何摆脱显示两次的图像?我认为这与整体选择“行”的渲染以及两个选择中的每一个的渲染中显示的图像有关。我尝试了各种组合来显示整体标签而不是,但我无法解决问题......有人可以帮忙吗?谢谢...

4

1 回答 1

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 %}
于 2012-08-13T21:35:25.657 回答