我是Symfony2和CreateFormBuilder来创建我的表单。
目前我正在使用{{ form_widget(form) }}
来显示表单。
我的实体具有path
属性,该属性是文件系统上保存图像的路径。
我想在表单中显示图像(带有<img>
html标签),我该如何实现这个结果?我应该按字段在模板字段中处理表单吗?或者有没有办法在模板中只拥有一个字段,并使用{{ form_widget(form) }}
呈现其他字段?
答案 0 :(得分: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 %}
此处,upload/dir/
是存储图片的路径。如果此路径有常量,则可以在Twig中使用它:
{{ asset(constant('Acme\\DemoBundle\\Model\\Object::UPLOAD_DIR') ~ '/' ~ form.vars.value.image) }}
另一种方法是使用自己的模板创建自己的类型:
编辑:我忘了一个有趣的选择。您可以自定义单个字段: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 %}