(Symfony 4)添加filepond类会擦除我的文件小部件,并且后端无任何显示

时间:2019-02-17 07:05:33

标签: symfony filepond

我想使用filepond来简化输入表单,但是它将文件小部件替换为一系列没有名称属性的元素,因此后端没有任何显示。

这是我的Symfony表单类:

class UserProfileType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {        
        $builder
            ->add('firstName', TextType::class)
            ->add('lastName', TextType::class)

            etc... 

            // This is the widget I am concerned about for this question
            ->add('idFile', FileType::class, [
                'label' => 'File or Files',
                'required' => false,
                'mapped'   => false,
                'multiple' => false
         ])

            etc... 

        ->add('save', SubmitType::class, [
            'attr' => ['class' => 'save'],
        ]); 
    }
}

这是我在树枝中创建文件小部件时的样子:

<div class="col-12">
    <label for="file-upload" class="mb-2">Photo I.D.</label>
                                                    <!-- so right here where I add the filepond class --> 
    {{ form_widget(form.idFile, { 'id': 'file-upload', 'attr': {'class':     'form-control filepond'} } ) }}
  </div>

这是我使用的filepond库,它包含在我的树枝文件的底部:

<!-- Load FilePond library -->
<script src="https://unpkg.com/filepond/dist/filepond.min.js"></script>
<!-- <script src="https://unpkg.com/jquery-filepond/filepond.jquery.js">     
</script> -->
<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script>
<link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet">
<link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet">

因此,当加载树枝文件时,filepond接管并将我的小部件转换为一系列具有各种属性的元素。

那很好,我知道filepond这样做是为了修饰您的表单。但是问题是在后端,什么都没有显示。

要添加的另一件事-filepond创建的所有元素都不具有“名称”属性,我不明白为什么。

因此,当我在后端查看suplerglobal文件时,我的idFile不存在。

只需再次确认一下,当我取出filepond类时,我的idFile就会很好地显示在后端的suplerglobal文件中。

这是树枝生成的输入元素:

<div class="col-12">
    <label for="file-upload" class="mb-2">Photo I.D.</label>
    <input type="file" id="file-upload" name="user_profile[idFile]" class="form-control filepond" /> 
  </div>

如果我执行检查元素,则在filepond生成的div中有一个< input type="hidden" name="user_profile[idFile]" value="">

这是后端的控制器代码:

public function saveProfileCompleteAction(Request $request)
{
    $user = $this->getUser();

    $form = $this->createForm(UserProfileType::class, $user);
    $form->handleRequest($request);

    if($form->isSubmitted() && $form->isValid())
    {
        $idFile = $form['idFile']->getData();

如果我执行dump($idFile);,则它仅显示空值,并且已经检查并确保已选择要上传的文件。

如何使用filepond库并使文件输入小部件显示在后端?

0 个答案:

没有答案