我创建了一个上传服务,以便在我的代码中的不同控制器中使用它。
但是当我想要访问页面以添加新的演出时,我现在得到一个例外:
控制器 “预订\ 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%'
答案 0 :(得分:1)
这不是你如何称呼服务!
不要将其作为参数传递,请按以下方式调用:
$container->get('booking_rooster.uploader');