我想在我的控制器中使用依賴注入。我正在使用FOSRestController。Symfony FOSRestController作爲服務(依賴注入)
我收到一個錯誤:
捆綁 「app.person_rest_controller」 不存在或者未啓用 。也許你忘了將它添加到你的AppKernel.php文件的 的registerBundles()方法中?在 /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