Я использую Symfony 4 с VichUploaderBundle 1.9, и мне трудно внедрить службу DownloadHandler
в свой контроллер, чтобы отправить файл клиенту.
Я также использую HashidsBundle, чтобы преобразовать свой идентификатор объекта во что-то вроде jFaJ
в моих URL-адресах.
Как указано в документации VichUploaderBundle, I Я вставляю службу в свой контроллер следующим образом:
public function download(Wallpaper $wallpaper, DownloadHandler $downloadHandler)
{
return $downloadHandler->downloadObject($wallpaper->getMedia(), 'uploadedFile');
}
Вот ошибка, которая у меня есть:
Аргумент 2, переданный в App \ Controller \ WallpapersController :: download (), должен быть экземпляром Vich \ UploaderBundle \ Handler \ DownloadHandler, заданным целым числом, вызываемым в / mnt / c / Users / user / Documents / Dev / symfony / vendor / symfony /http-kernel/HttpKernel.php в строке 151
Я также попытался вручную вызвать службу, добавив в свой контроллер следующую строку: $this->get('vich_uploader.download_handler');
Но он все еще не работает, у меня сейчас такая ошибка:
Служба vich_uploader.download_handler не найдена: даже если она существует в контейнере приложения, контейнер внутри "App \ Controller \ WallpapersController" представляет собой меньший локатор службы, который знает только о "doctrine", "form.factory", "http_kernel" "," пакет_параметров "," стек_запроса "," маршрутизатор "," security.authorization_checker "," security.csrf.token_manager "," security.token_storage "," сериализатор "," сеанс "и" веточка ". Попробуйте вместо этого использовать инъекцию зависимостей.