私のプロジェクトのいくつかのルートでユーザセッションをチェックする必要があります。そこでコントローラリスナを使用し、コントローラが特定のインタフェースのインスタンスである場合は、各要求を調べました。それが本当であれば、私はセッションをチェックし、有効でない場合、セッションが修復される別のコントローラにユーザをリダイレクトする必要があります。私はこの方法がhereSymfony2コントローラのスワップが機能しない
を説明し、この方法を使用これは、コードは、私が使用します。
Fatal error: Call to a member function get() on a non-object in C:\Users\Yoghurt\Websites\Mobile\vendor\symfony\src\Symfony\Bundle\FrameworkBundle\Controller\Controller.php on line 189
は私と呼ばれるコントローラをしようと思う:
public function onKernelController(FilterControllerEvent $event)
{
$controller = $event->getController();
if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType())
{
if (!is_array($controller))
return;
$controllerObject = $controller[0];
if ($controllerObject instanceof PreControllerInterface)
{
$result = $controllerObject->initialize($event->getRequest());
if($result != null)
{
$ctrl = new PublicFrontendController();
$event->setController(array($ctrl, 'identifyAction'));
}
}
}
}
問題は、私は次のエラーを取得するということですサービスにアクセスしますが、コントローラのこのインスタンスは空であるためコンテナ要素にアクセスできません。残念ながら、私はそれを修正する方法を知らない。誰かが私がその仕事をどうやって作ることができるかを知っていますか?
敬具 フェリックス