如何在Symfony2表单中为每个选项列表添加图像?

时间:2012-08-13 18:48:56

标签: symfony twig symfony-forms

我正在使用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> 

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

1 个答案:

答案 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 %}