【发布时间】:2017-01-23 05:19:57
【问题描述】:
我正在尝试在我的控制器中使用依赖注入。我正在使用 FOSRestController。
我收到一个错误:
捆绑“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
一个想法?
谢谢! =)
【问题讨论】:
-
注意:永远不要将整个容器注入到服务中,而只是注入您真正需要和想要使用的服务等。这会增加你的可测试性等等。如果你需要注入很多依赖,你的服务就很大。
-
感谢您的说明,我会考虑的。
标签: php symfony dependency-injection fosrestbundle