【问题标题】:Symfony2 Input file photo previewSymfony2 输入文件照片预览
【发布时间】:2015-10-08 14:01:14
【问题描述】:

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

这是表单中添加的代码:

->add('photo','file',array(
                'attr' => array("class"=>"filestyle", 
                                "data-iconName"=>"glyphicon-inbox",
                                "data-buttonText"=>"Scegli foto..",
                                "data-buttonName"=>"btn-primary",
                                "data-iconName"=>"glyphicon-folder-open"),
                'label'=>'user.file.label',
                'required'=>false,
                )
 )

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    这里

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

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

    IMAGE_PATH
    

    是存储根路径的常量。

    现在您的代码正在将照片路径发送到您的表单,现在您必须获取该路径并显示给客户,在您的 twig 文件中针对这种情况,以便您可以检查值是否为假。

    为此,您必须像这里描述的那样呈现您的自定义表单主题,只需添加如下代码 - 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' 将检查它是否是输入类型文件。

    &lt;div class="file-box"&gt; 将显示您的图像(如果有)。

    【讨论】:

      【解决方案2】:

      根据 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 库或自定义函数,like this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-14
        • 2021-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-16
        • 1970-01-01
        • 2015-01-13
        相关资源
        最近更新 更多