サブドメインが変更されていないことを確認するために、同様のことを行います。次のように、構成ファイルにリスナーをサービスとして配置できます。
services:
page_load_listener:
class: Acme\SecurityBundle\Controller\PageLoadListener
arguments:
security: "@security.context",
container: "@service_container"
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 64 }
優先度がどのように機能するかは正確にはわかりませんが、設定が高すぎると、アプリケーションの残りの部分よりも先に実行されないことがわかりました。もう少し研究することは、私のやることリストにあります。
リスナーがどのように見えるかの例を次に示します。
namespace Acme\SecurityBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class PageLoadListener extends controller
{
private $securityContext;
protected $container;
protected $query;
public function __construct(SecurityContext $context, $container, array $query = array())
{
$this->securityContext = $context;
$this->container = $container;
$this->query = $query;
}
public function onKernelRequest(GetResponseEvent $event)
{
//if you are passing through any data
$request = $event->getRequest();
//if you need to update the session data
$session = $request->getSession();
//Whatever else you need to do...
}
}
特定のページでのみ実行するように設定する最良の方法はわかりませんが、ルートを確認し、ルートが設定したものと一致する場合にのみデータベースをヒットすることをお勧めします。
それがあなたを始めることを願っています!
グレッグ