現在、私は Symfony2 を使用していますが、これは素晴らしいフレームワークです。
私はSpringMVCを使用しましたが、「インターセプター」の概念があり、「コントローラー」へのリクエストをキャッチし、たとえば、ユーザーがログインしているかどうかをチェックすることもできます。
Symfony2 で同様のことを行うためのルーターの方法に関する注釈はありますか?
前もって感謝します。
現在、私は Symfony2 を使用していますが、これは素晴らしいフレームワークです。
私はSpringMVCを使用しましたが、「インターセプター」の概念があり、「コントローラー」へのリクエストをキャッチし、たとえば、ユーザーがログインしているかどうかをチェックすることもできます。
Symfony2 で同様のことを行うためのルーターの方法に関する注釈はありますか?
前もって感謝します。
イベント リスナーをアタッチして、フレームワーク イベントに応答できます。を見てみましょう:
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" />