gpt4 book ai didi

symfony - Symfony2表单事件监听器可以访问服务容器吗?如何访问?

转载 作者:行者123 更新时间:2023-12-02 08:47:19 25 4
gpt4 key购买 nike

根据标题,Symfony2 表单事件监听器可以访问服务容器吗?

这是一个示例事件监听器(用于绑定(bind)后事件):

class CustomerTypeSubscriber implements EventSubscriberInterface
{

public static function getSubscribedEvents()
{
return array(FormEvents::POST_BIND => 'onPostBind');
}

public function onPostBind(DataEvent $event)
{
// Get the entity (Customer type)
$data = $event->getData();

// Get current user
$user = null;

// Remove country if address is not provided
if(!$data->getAddress()) :
$data->setCountry(null);
endif;
}

}

最佳答案

您需要访问服务容器做什么?

您可以使用依赖项注入(inject)将任何服务注入(inject)您的监听器(因为您将监听器定义为服务,对吧?)。

您应该能够执行以下操作:

    service.listener:
class: Path\To\Your\Class
calls:
- [ setSomeService, [@someService] ]
tags:
- { [Whatever your tags are] }

在你的监听器中:

private $someService;

public function setSomeService($service) {
$this->someService = $someService;
}

其中 someService 是您要注入(inject)的任何服务的 ID。

如果你愿意,你可以使用@service_container注入(inject)服务容器,但最好只注入(inject)你需要的东西,因为我认为让所有容器都知道会让你有点懒。

关于symfony - Symfony2表单事件监听器可以访问服务容器吗?如何访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com