Symfony2输入文件照片预览

时间:2015-10-08 14:01:14

标签: php symfony file-io photo symfony-forms

我在Symfony2中有一个表单并且在表格中我有一个照片输入字段,在上传照片文件后给我路径,但我会显示有关已上传照片的预览..

这是表单中添加的代码:

ADMINS =(('admin','xyz@gmail.com'),)
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
SERVER_EMAIL = 'xyz@gmail.com'
EMAIL_HOST_USER = 'xyz@gmail.com'
EMAIL_HOST_PASSWORD = '*****'
EMAIL_PORT = 587
SEND_BROKEN_LINK_EMAILS = True

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
        'mail_admins': {
            'level': 'DEBUG',
            'class': 'django.utils.log.AdminEmailHandler',
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'oodles/debug.log',
        },

    },

    'loggers': {
        'django.request': {
            'handlers': ['mail_admins', 'file', ],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

如何使用方法 onChange 或者您能给我显示上传照片预览的方法吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

您正在将文件存储到某个位置,然后将该路径存储到数据库,因此您需要为此添加条件,以显示图像。

您可以使用PhotoImage(文件)从我的表单传递图像值属性(我假设您的实体名称是Photo)这样的实体

'value' => file_exists(IMAGE_PATH.$builder->getData()->getPhotoImage()) ? $builder->getData()->getPhotoImage() : false )

这里

$builder->getData()->getPhotoImage()  

为您提供PhotoImage实体值(如果有)和

IMAGE_PATH

是常量,用于存储根路径。

现在您的代码正在向您的表单发送照片路径,现在您必须获取该路径并显示给客户,以便在twig文件中显示此条件,以便您可以检查值是否为false。

为此您必须渲染自定义表单主题,如此处所述,只需添加此代码,如下面的代码 - link

{% if form.vars.block_prefixes[1] == "file" %}
    <div class="file-box" {% if form.vars.attr.value is not defined or form.vars.attr.value %}style="background:url('{{form.vars.attr.value}}')"{% endif %}></div> 
{% endif %}         
{{ form_widget(form) }}
{{ form_label(form) }}

{% if form_errors(form) %}
    {{ form_errors(form) }}
{% endif %}

form.vars.block_prefixes[1] == 'file'将检查它是否是输入类型文件。

如果您有图片,

<div class="file-box">会显示您的图片。

答案 1 :(得分:0)

根据Nikhil Chaudhary的回答,您可以在表单中显示:

{% if form.photo.vars.block_prefixes[1] == "file" and form.photo.vars.data %}
    <img style="max-width: 100px" src="{{ asset(form.photo.vars.data) }}">
{% endif %}

您不需要检查文件,因为输入是文件,所以可以删除

form.photo.vars.block_prefixes[1] == "file"

阻止代码。

但如果您不想显示更改,请使用jQuery lib或自定义函数like this