作为表单的一部分上载的文件是';t Symfony 4中请求的一部分
我创建的表单包含一个上载字段,用于上载文件。此文件可以是任何格式。表单本身是在FormType中创建的,并且控制器成功地处理表单的提交。但是,每次我向该控制器提交表单并执行作为表单的一部分上载的文件是';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
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);
}