Dropzone.js 和 symfony 表单生成器

Dropzone.js and symfony formbuilder

我正在尝试处理 dropzone.js 以便与我的实体 symfony formbuilder 一起正常工作。

如果我使用简单 <input type="file" id="form_file" name="form[file]">

,一切正常

但是如果我使用 dropzone.js,我会在 POST 中发现这种差异:

我该如何处理?

这是我的 js:

Dropzone.options.myAwesomeDropzone = { 
                autoProcessQueue: false,
                uploadMultiple: true,
                parallelUploads: 25,
                maxFiles: 25,

                init: function() {
                    var myDropzone = this;

                    $("#submit-all").click(function (e) {
                                e.preventDefault();
                                e.stopPropagation();
                                myDropzone.processQueue();
                            }
                    );

                }

            }

我的表单文件如下所示:

    <form id="my-awesome-dropzone" class="wizard-big dropzone" action="{{ path('add') }}" method="post"  {{ form_enctype(form) }}>
    {{ form_widget(form.name, {'attr': { 'class': 'form-control' } }) }}
    <div class="row">
        <div class="dropzone-previews"></div>
        <div class="fallback"> 
         {{ form_widget(form.file, {'attr': { 'class': 'cotam' } }) }}
        </div>
        </div>
<button type="submit" id="submit-all" class="btn">Upload the file</button>
    {{ form_rest(form) }}
    </form>

我的控制器:

public function addAction(Request $Request) {

        $photo = new Photo();

        $form = $this->createFormBuilder($photo)
            ->add('name')
            ->add('file')
            ->getForm();

        $form->handleRequest($Request);

        if ($form->isValid() && $Request->isMethod('POST')) {

            $em = $this->getDoctrine()->getManager();

            $em->persist($photo);
            $em->flush();

            $this->redirect($this->generateUrl('add'));
        }



        return $this->render('MyBundle::add.html.twig', array(
            'form' => $form->createView()
        ));
    }

你能帮帮我吗?

好的,我找到了答案...尽可能简单...

您只需添加一个选项:

paramName: "form[file]"

到你的dropzone配置。