如何将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与表单小部件链接?的主要内容,如果未能解决你的问题,请参考以下文章