如何将dropzone与表单小部件链接?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将dropzone与表单小部件链接?相关的知识,希望对你有一定的参考价值。

如何将dropzone与form_widget链接?

简而言之,我想做的是用Dropzone的内容填充form_widget(form.picture) !或将它们链接在一起!

如果不可能,那么如何在控制器上检索/获取dropzone的内容?

这里是视图(树枝页面)

 form_start(form, attr: novalidate: 'novalidate')   
     <div class="row clearfix">
        <div class="col-lg-12 col-md-12 col-sm-12">
            <div action="/"  class="dropzone" >
                <div class="dz-message">
                    <div class="drag-icon-cph"> <i class="material-icons">touch_app</i> </div>
                    <h3>Drop files here or click to upload.</h3>
                <div class="fallback">
                      form_widget(form.picture)         
                </div>
            </div>
        </div>
    </div>
 form_rest(form) 
 form_end(form) 

当我按Ctrl + U检查view-source时,如下所示:

 <div class="row clearfix">
    <div class="col-lg-12 col-md-12 col-sm-12">
        <div action="/"  class="dropzone" >
            <div class="dz-message">
                <div class="drag-icon-cph"> <i class="material-icons">touch_app</i> </div>
                <h3>Drop files here or click to upload.</h3>
            <div class="fallback">
                 <input type="file" id="user_picture" name="user[picture]" />       
            </div>
        </div>
    </div>
</div>

控制者

/**
 * @Route("/new_doctor", name="doctor_new", methods="GET","POST")
 */
public function new(Request $request,UserPasswordEncoderInterface $encoder): Response

    $doctor = new User();
    $form = $this->createForm(UserType::class, $doctor);
    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()) 
        $this->get('session')->getFlashBag()->clear();
        $file=$doctor->getPicture();
        dump($file);
        die(); 

[当我执行dump($file);时我得到NULL这是一些dropzone选项

Dropzone.prototype.defaultOptions = 
  url: null,
  method: "post",
  withCredentials: false,
  parallelUploads: 1,
  uploadMultiple: false,
  maxFilesize: 256,
  paramName: "user[picture]",
  createImageThumbnails: true,
  maxThumbnailFilesize: 10,
  thumbnailWidth: 120,
  thumbnailHeight: 120,
  filesizeBase: 1000,
  maxFiles: 1,
  params: ,
  clickable: true,
  ignoreHiddenFiles: true,
  acceptedFiles: null,
  acceptedMimeTypes: null,
  autoProcessQueue: true,
  autoQueue: true,
答案

要在Symfony Controller中获取文件,请使用

$uploadedFile = $request->files->get('file_name');

其中paramName在Dropzone选项中设置的位置:

Dropzone.prototype.defaultOptions = 
    paramName: "file_name",

如果文件存在,则进行逻辑验证并转到上载目录...

如果我的理解正确,那么您的Dropzone会立即通过ajax发送文件(删除时)。因此,您需要在控制器上捕获此事件,然后将文件名发送回表单。

关于Dropzone和Symfony的Symfony屏幕录像:https://symfonycasts.com/screencast/symfony-uploads/dropzone

以上是关于如何将dropzone与表单小部件链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何将页面的 slug 添加到 wordpress 小部件中的链接

如何将页面的slug添加到wordpress小部件中的链接

如何将 Dijit 小部件动态添加到 Dojo 表单?

Django ForeignKey 表单字段小部件

如何禁用来自另一个站点的小部件上的链接?

如何关闭在提升的小部件中单击的按钮上的 qt 小部件 ui?