Я пытаюсь использовать инъекцию зависимостей в моем контроллере. Я использую FOSRestController.Symfony FOSRestController как услуга (инъекция зависимостей)
я получил ошибку:
Bundle "app.person_rest_controller" не существует, или он не включен. Может быть, вы забыли добавить его в метод registerBundles() из вашего файла AppKernel.php? в /var/www/html/src/AppBundle/Resources/config/routing.yml (который является , импортированным из "/var/www/html/app/config/routing.yml").
Мой контроллер выглядит следующим образом:
class PersonRestController extends FOSRestController
{
private $entityManager;
private $container;
private $sendNewContactRabbitMQProducer;
public function __construct(EntityManager $entityManager, $container, Producer $rabbitMQProducer)
{
$this->entityManager = $entityManager;
$this->container = $container;
$this->sendNewContactRabbitMQProducer = $rabbitMQProducer;
}
public function postPersonAction(ParamFetcher $paramFetcher)
{
...
}
Мой routing.yml:
service_person:
type: rest
prefix: /v1
resource: "@app.person_rest_controller"
name_prefix: api_1_ # naming collision
И мой services.yml:
services:
app.person_rest_controller:
class: AppBundle\Controller\PersonRestController
arguments:
- "@doctrine.orm.entity_manager"
- "@service_container"
- "@person.rabbitmq.producer.send_new_contact"
person.rabbitmq.producer.send_new_contact:
class: AppBundle\Service\SendNewContactRabbitMQProducer
arguments: []
calls:
- [setRabbitMQProducer, ["@old_sound_rabbit_mq.send_person_id_from_hotelpro4u_producer"]]
- [setLogger, ['@logger']]
Я основываю свою работу на этом: https://github.com/FriendsOfSymfony/FOSRestBundle/issues/990
Идея?
Спасибо! =)
Примечание: никогда не впрыскивать весь контейнер на услугу, но только услуги и т.д. Вам действительно нужно, и хотите использовать. Это увеличит вашу тестируемость и так далее. Если вам нужно вводить много зависимостей, ваш сервис будет большим. – KhorneHoly
Спасибо за эту заметку, я это рассмотрю. – Xero