php - Symfony 使用表单上传文件
问题描述
我正在使用 Symfony 3.4.8,并尝试创建一个用于上传文件的表单。我完全按照Symfony 文档的步骤进行操作,但出现错误:
Controller "AppBundle\Report::uploadReport()" requires that you provide a value for the "$fileUploader" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one.
这是我的代码的一部分,除了我更改了类名之外,其余部分与文档中的相同。显然,当函数被调用时,没有FileUploader
参数传递给函数。如果我删除参数FileUploader $fileUploader
,页面可以加载而不会引发异常,但它不会获取文件。我是 Symfony 的新手,我该如何解决这个问题?
/**
* @Route("/report/create-report/upload/", name="report_create")
*/
public function uploadReport(Request $request, FileUploader $fileUploader)
{
$report = new Report();
$form = $this->createForm(ReportType::class, $report);
$form->add('submit', SubmitType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// $file stores the uploaded PDF file
/** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
$file = $report->getReport();
$fileName = $fileUploader->upload($file);
$report->setBrochure($fileName);
//$fileName = $this->generateUniqueFileName().'.'.$file->guessExtension();
// moves the file to the directory where brochures are stored
//$file->move(
// $this->getParameter('reports_directory'),
// $fileName
//);
// updates the 'brochure' property to store the PDF file name
// instead of its contents
//$report->setReport($fileName);
// ... persist the $product variable or any other work
}
return $this->render('report/createReport.html.twig', array(
'form' => $form->createView(),
));
}
我看过这篇文章,但由于没有这样的变量,我无法得到最终的答案$container
。
最后更新:我放弃了尝试从头开始上传。我使用了推荐的捆绑包,使其以最少的编码量工作。
解决方案
FileUploader.php 服务的参数brochures_directory似乎是空的。您是否在 service.yml 中指定了它?您是否也将它添加到您的 config.yml 中?
然后你在更改后清除了 symfony 缓存吗?
推荐阅读
- javascript - 如何在 javascript 中的 html 中添加 javascript 变量?
- postgresql - psycopg2 在 mac 中的 virtualenv 内安装错误
- c - 带指针的增量函数不起作用
- c# - 检测闪光灯是否已经打开
- sql-server - 运行特殊过程时 AdventureWorks 2012 SQL 错误
- python - 将交叉表 pandas 绘制成饼图
- sql - 取时间差之和和列的最后一个值
- php - join():不推荐使用数组后传递胶水字符串。交换参数
- gtsummary - 使用 gtsummary,是否可以将 N 放在列名的单独行上?
- reactjs - 是否可以“部分”在 Django 项目中使用 React?