Symfony 使在kernel.controller事件中设置的控制器中的对象可访问
如何在Symfony 使在kernel.controller事件中设置的控制器中的对象可访问,symfony,Symfony,如何在kernel.controller事件中设置的控制器中访问对象 我有一个onKernelController方法,它在controller之前运行,我需要在onKernelController中设置的控制器中的一些数据。您可以使用依赖项注入来解决此问题: 1) 将对象/类转换为服务并将其注入侦听器 services: your_object: class: Your\Namespace\YourObjectClass your_listener:
kernel.controller
事件中设置的控制器中访问对象
我有一个
onKernelController
方法,它在controller之前运行,我需要在onKernelController
中设置的控制器中的一些数据。您可以使用依赖项注入来解决此问题:
1) 将对象/类转换为服务并将其注入侦听器
services:
your_object:
class: Your\Namespace\YourObjectClass
your_listener:
class: Your\Namespace\YourListener
arguments: [ @your_object ]
tags:
- { name: kernel.controller, event: kernel.request, method: onKernelController }
2) 在注入的对象上设置一些属性(也可以是对象)
监听器类
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
class YourListener
{
protected $object;
public function __construct($object)
{
$this->object = $object;
}
public function onKernelController(FilterControllerEvent $event)
{
// ...
$object->setProperty('some_property_value');
}
}
3.)在容器感知控制器中获取属性(或者将控制器也转换为服务,并将@您的_对象注入)
控制器
use Symfony\Component\DependencyInjection\ContainerAware;
// or: use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class SomeController extends ContainerAware // or: extends Controller
{
public function someAction()
{
$property = $this->container->get('your_object')->getProperty;
// $property => 'some_property_value'
}
它不应该是参数:[@your\u object]
而不是参数:[@your\u service]
?@
是什么意思?没错,我修正了:)@您的\u对象
意味着注入服务您的\u对象
,而%some\u name%
会注入参数some\u name
,而some\u name
只会注入字符串some\u name
。足够清楚吗?感谢编辑Roman-我将您的\u服务
更改为我的\u对象
,使其更加明显,并且忘记更改引用:)编码愉快!