【问题标题】:Symfony2 + CreateFormBuilder how to render an image in a formSymfony2 + CreateFormBuilder 如何在表单中渲染图像
【发布时间】:2012-08-21 15:04:17
【问题描述】:

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

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

【问题讨论】:

标签: image forms templates symfony


【解决方案1】:

您可以做的是逐个字段处理表单,如果设置了值,则显示图像。

假设您有一个字段名称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 %}

【讨论】:

  • 这些来源仍然有效还是 Symfony 4?
猜你喜欢
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
相关资源
最近更新 更多