Symfony:事件订阅者阻止调用控制器

时间:2017-04-08 15:28:12

标签: php symfony symfony-3.2

我发了以下活动订阅者:

namespace AppBundle\EventSubscriber;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpFoundation\Response;

class BeforeResolvingController implements EventSubscriberInterface
{

    public static function getSubscribedEvents()
    {
        // return the subscribed events, their methods and priorities
        return array(
                KernelEvents::REQUEST => array(
                        array('limitVisitor',0)
                ),
        );
    }

    public function limitVisitor($e)
    {
        return new Response("Hello");
    }

}

我在services.yml文件中添加了以下内容:

app.request_subscriber:
    class: AppBundle\EventSubscriber\BeforeResolvingController
    tags:
      - { name: kernel.event_subscriber }

我想要做的是阻止调用控制器并直接打印输出。在不久的将来,将实施一种控制机制,我希望能够根据情况控制控制器被阻止。

你知道怎么做吗?上面的代码似乎不起作用。正如我在http://symfony.com/doc/current/components/http_kernel.html#component-http-kernel-kernel-request中看到的那样,我能够做到这一点。

1 个答案:

答案 0 :(得分:0)

limitVisitor方法应该像我那样实现:

public function limitVisitor(GetResponseEvent $e)
{
    $response=new Response("Hello");
    $e->setResponse($response);
}

将显示消息Hello

相关问题