服务上传器缺少参数异常

时间:2017-09-05 13:20:56

标签: symfony

我创建了一个上传服务,以便在我的代码中的不同控制器中使用它。

但是当我想要访问页面以添加新的演出时,我现在得到一个例外:

  

控制器   “预订\ RoosterBundle \控制器\ ArtistController :: addGigAction()”   要求您为“$ fileUploader”参数提供值。

为什么我得到这个?值应该是$ file但我需要先访问我的表单并提交文件...希望有人可以帮助我。非常感谢提前

这是我的服务:

<?php


namespace Booking\RoosterBundle\Uploader;

use Symfony\Component\HttpFoundation\File\UploadedFile;

class FileUploader
{
    private $targetDir;

    public function __construct($targetDir)
    {
        $this->targetDir = $targetDir;
    }

    public function upload(UploadedFile $file)
    {
        $fileName = md5(uniqid()).'.'.$file->guessExtension();

        $file->move($this->getTargetDir(), $fileName);

        return $fileName;
    }

    public function getTargetDir()
    {
        return $this->targetDir;
    }
}

这是我的控制器:

public function addGigAction(Request $request , $id , FileUploader $fileUploader ){

      ...

        $gig = new Gig();
        $form = $this->createForm(GigType::class, $gig);


        if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {

            $file = $gig->getFlyer();
            $fileName = $fileUploader->upload($file);
            $gig->setFlyer($fileName);

            $em->persist($gig);
            $em->flush();

         ...

    }

这是我的服务声明在我的包中

booking_rooster.uploader:
        class: Booking\RoosterBundle\Uploader\FileUploader
        arguments:
             $targetDir: '%upload_directory%'

1 个答案:

答案 0 :(得分:1)

这不是你如何称呼服务!

不要将其作为参数传递,请按以下方式调用:

$container->get('booking_rooster.uploader');