0

我的印象是我可以像下面的代码一样获得请求对象。与依赖注入有关。

下面是作为服务激活的,除了第一个参数给出这个错误之外,一切似乎都设置正确:

ErrorException:可捕获的致命错误:参数 1 传递给....

namespace Acme\Bundle\BundleName\EventListener;

use Symfony\Component\HttpKernel\Event\GetResponseEvent;

class RequestListener
{

    public function onKernelRequest(GetResponseEvent $event)
    {

        $request = $event->getRequest();

        // etc....

我猜上面是不是你是怎么做到的?

4

1 回答 1

0

如果你想在内核请求上声明一个事件监听器,你应该这样声明(注意标签参数):

services:
    acme.demobundle.listener.request:
        class: Acme\Bundle\BundleName\EventListener\RequestListener
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

否则,如果你只想创建一个服务,你应该这样声明它

services:
    acme.demobundle.demo.service:
        class: Acme\Bundle\BundleName\Service\DemoService
        arguments: [@service_container]

对于服务或侦听器,我建议只注入所需的服务。

很高兴知道服务将在第一次调用时被初始化。

可以通过容器访问服务、侦听器和 twig 扩展。

$this->container->get('your.listener.name')
$this->container->get('your.service.name')
$this->container->get('your.extension.name')
于 2013-03-18T05:38:52.677 回答