作为表单的一部分上载的文件是';t Symfony 4中请求的一部分

作为表单的一部分上载的文件是';t Symfony 4中请求的一部分,symfony,symfony4,Symfony,Symfony4,我创建的表单包含一个上载字段,用于上载文件。此文件可以是任何格式。表单本身是在FormType中创建的,并且控制器成功地处理表单的提交。但是,每次我向该控制器提交表单并执行print\u r或var\u dump()。当我使用$file=$request->files->get('estimateUpload')和var\u dump()将只返回NULL 以下是我正在使用的formType: <?php namespace App\Form; use App\Entity\IhcVeh

我创建的表单包含一个上载字段,用于上载文件。此文件可以是任何格式。表单本身是在FormType中创建的,并且控制器成功地处理表单的提交。但是,每次我向该控制器提交表单并执行
print\u r
var\u dump()。当我使用
$file=$request->files->get('estimateUpload')
var\u dump()
将只返回
NULL

以下是我正在使用的formType:

<?php

namespace App\Form;

use App\Entity\IhcVehicleDamageMatrix;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\File;

class IhcVehicleDamageEntryType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('id')
            ->add('incidentId')
            ->add('vehicleDamageId')
            ->add('damageType')
            ->add('description')
            ->add('wheelTyreDamage')
            ->add('tyreAge')
            ->add('tyreDotCode')
            ->add('treadDepth')
            ->add('renumerationCost')
            ->add('itemAge')
            ->add('created')
            ->add('modified')
            ->add('estimateUpload', FileType::class, [
                'required' => false
            ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => IhcVehicleDamageMatrix::class,
        ]);
    }
}

更好的方法是直接从
IhcVehicleDamageMatrix
获取
estimateUpload
。在控制器内部尝试以下操作:

$ihcVehicleDamageMatrix = new IhcVehicleDamageMatrix();

$form = $this->createForm(IhcVehicleDamageEntryType::class, $ihcVehicleDamageMatrix);

if ($form->isSubmitted() && $form->isValid()) {
    $file = $ihcVehicleDamageMatrix->estimateUpload();
    dump($file);
}

谢谢你的回答。然而,这是我尝试的第一件事情之一,出于某种原因,文件仍然返回为
NULL
。我接受了您提供的内容,由于有输入错误而对其进行了修改,并包含了
$request
,它提供了
NULL
。您是否使用
form\u start
twig函数呈现表单元素?看起来您没有多部分/表单数据类型。我是。我已经用表单的开头和结尾更新了我的问题。也许可以检查Symfony Profiler,看看在使用所选文件提交表单后,您是否在
$\u FILES
PHP全局变量中有此文件。为了查看Profiler,我必须去掉一些用于提交表单的Ajax。当我这样做,它只是提交正常的文件出现!因此,现在是ajax的问题,而不是symfony本身。
    public function vehicleDamageForm(Request $request)
    {
        // Get Form Details
        $formdet = $request->get('ihc_vehicle_damage_entry');

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

        $file = $request->files->get('estimateUpload');
        var_dump($file);
}
$ihcVehicleDamageMatrix = new IhcVehicleDamageMatrix();

$form = $this->createForm(IhcVehicleDamageEntryType::class, $ihcVehicleDamageMatrix);

if ($form->isSubmitted() && $form->isValid()) {
    $file = $ihcVehicleDamageMatrix->estimateUpload();
    dump($file);
}