Symfony загрузите файл, используя форму - PullRequest
0 голосов
/ 30 августа 2018

Я использую 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.

Последнее обновление: я прекратил попытки загрузки с нуля. Я использовал рекомендованный комплект , чтобы он работал с минимальным количеством кода.

1 Ответ

0 голосов
/ 30 августа 2018

аргумент брошюр_каталогов вашего сервиса FileUploader.php выглядит как emtpy. Вы указали это в service.yml? Вы также добавили его в свой config.yml?

А затем очистили ли вы кэш Symfony после изменения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...