Symfony2 + CreateFormBuilder如何在表单中呈现图像

Bag*_*yte 4 forms templates image symfony

我是Symfony2和CreateFormBuilder来创建我的表单.

目前我正在使用{{ form_widget(form) }}显示表单.我的实体具有path属性,该属性是文件系统上保存图像的路径.我想在表单中显示图像(带有<img>html标记),我该如何实现这个结果?我应该按字段在模板字段中处理表单吗?或者有没有办法在模板中只拥有一个字段并用其他字段渲染{{ form_widget(form) }}

Wil*_*and 7

您可以做的是按字段处理表单字段,并在设置值时显示图像.

假设你有一个字段名称image.在Twig中,您可以通过它访问其值form.vars.value.image.然后,显示img标签非常容易:

{% if form.vars.value.image is not null %}
    <img src="{{ asset('upload/dir/' ~ form.vars.value.image) }}" />
{% endif %}
Run Code Online (Sandbox Code Playgroud)

upload/dir/是存储图像的路径.如果此路径有常量,则可以在Twig中使用它:

{{ asset(constant('Acme\\DemoBundle\\Model\\Object::UPLOAD_DIR') ~ '/' ~ form.vars.value.image) }}
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用自己的模板创建自己的类型:

编辑:我忘记了一个有趣的选择.您可以自定义单个字段:http://symfony.com/doc/current/cookbook/form/form_customization.html#how-to-customize-an-individual-field.以下是您可以做的草稿:

{% form_theme form _self %}

{% block _object_image_row %}
    <div class="name_row">
        {{ form_label(form) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}

        {% if form.vars.value.image is not null %}
            <img src="{{ asset('upload/dir/' ~ form.vars.value.image) }}" />
        {% endif %}
    </div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)