Symfony 2:“文件”字段值始终为空

时间:2013-07-16 18:10:14

标签: symfony

我正在尝试制作一个构建滑块的表单。它可以有任意数量的图像,我想显示已经上传的图像的预览。设置多个图像区域非常简单,但我已经开始关注显示图像的预览。

我正在使用此模板渲染“滑块图像”字段:

{% block form_widget_simple %}
{% spaceless %}
    <div class="form-widget slider">
        {% set type = type|default('text') %}
        {% if type == 'file' and value is not empty %}
            <img src="{{ value }}" width="200"/><br/>
        {% endif %}
        <input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
    </div>
{% endspaceless %}
{% endblock form_widget_simple %}

value变量在file输入类型上始终为空,因此我不确定如何获取上传图像的网址。我使用的是自定义字段类型,只需添加file字段并挂接数据源(这只是Symfony\Component\HttpFoundation\File\File周围的简单包装)。如果你需要这个代码让我知道,但它的所有样板材都让我怀疑你。

提前致谢。

1 个答案:

答案 0 :(得分:6)

Symfony2 FileType没有值,它在buildView方法中被写入。 https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Form/Extension/Core/Type/FileType.php#L28

但您可以通过forms.vars.data

访问它
    {% if type == 'file' and form.vars.data is not null %}
        {# Here you should somehow generate url to file but let assume 
           you have it in "/path/to/file/" folder that is accessible through web server #}
        <img src="/path/to/file/{{ form.vars.data.name }}" /><br/>
    {% endif %}