0

現在、私は Symfony2 を使用していますが、これは素晴らしいフレームワークです。

私はSpringMVCを使用しましたが、「インターセプター」の概念があり、「コントローラー」へのリクエストをキャッチし、たとえば、ユーザーがログインしているかどうかをチェックすることもできます。

Symfony2 で同様のことを行うためのルーターの方法に関する注釈はありますか?

前もって感謝します。

4

1 に答える 1

2

イベント リスナーをアタッチして、フレームワーク イベントに応答できます。を見てみましょう:

http://symfony.com/doc/current/cookbook/service_container/event_listener.html

サブスクライブできるイベントは多数あり、それらはすべてドキュメントで入手できます。

http://api.symfony.com/2.1/Symfony/Component/HttpKernel/KernelEvents.html

おそらく、REQUEST イベントを探しているのでしょう。次のようになります。

<?php

namespace Acme\DemoBundle\Listener;

use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;

class Listener
{
    /**
     * @var \Symfony\Component\DependencyInjection\ContainerInterface
     */
    private $router;
    private $service_container;

    public function __construct(\Symfony\Component\Routing\Router $router, $service_container) {
        $this->router = $router;
        $this->service_container = $service_container;
    }

    public function onKernelRequest(GetResponseEvent $event) {
         // DO STUFF
    }
}

そしてservices.xmlで:

<service id="max4.sms.listener"  class="Acme\DemoBundle\Listener\Logger">
        <tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" />
        <argument type="service" id="router" />
        <argument type="service" id="service_container" />
</service>

リッスンしているイベントを定義します

<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" />

そして、 __construct()メソッドに注入された引数( http://symfony.com/doc/current/components/dependency_injection/introduction.htmlを参照):

<argument type="service" id="router" />
<argument type="service" id="service_container" />
于 2013-01-14T20:58:28.180 に答える