目前我正在使用Symfony2,它是一個很棒的框架。Symfony2,有沒有類似於SpringMVC攔截器的工作方式?
我和SpringMVC一起工作,它具有「攔截器」的概念,它捕獲請求到任何「控制器」,並允許例如檢查是否知道用戶是否已登錄。
是否有路由器的任何註釋方式來做與Symfony2類似的東西。
在此先感謝。
目前我正在使用Symfony2,它是一個很棒的框架。Symfony2,有沒有類似於SpringMVC攔截器的工作方式?
我和SpringMVC一起工作,它具有「攔截器」的概念,它捕獲請求到任何「控制器」,並允許例如檢查是否知道用戶是否已登錄。
是否有路由器的任何註釋方式來做與Symfony2類似的東西。
在此先感謝。
您可以附加事件偵聽器來響應框架事件。看一看:
http://symfony.com/doc/current/cookbook/service_container/event_listener.html
有一個數字,你可以訂閱的事件,所有的人都可用的文檔:
http://api.symfony.com/2.1/Symfony/Component/HttpKernel/KernelEvents.html
也許你正在尋找的請求事件,它應該是這個樣子:
<?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" />
的http:// symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html – Mike