我是 Symfony2 和 CreateFormBuilder 来创建我的表单。
目前我正在使用{{ form_widget(form) }}
来显示表单。我的实体的path
属性是文件系统上保存的图像的路径。我想以表单(带有<img>
html标签)显示图像,我怎样才能达到这个结果?我应该逐个字段处理模板中的表单吗?或者有没有办法只拥有模板中的一个字段并使用 渲染其他字段{{ form_widget(form) }}
?
您可以做的是逐个字段处理表单,并在设置值时显示图像。
假设您有一个字段 name 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 %}