0
をリダイレクトします:symfonyの2.8 - コントローラリスナー、コントローラは、後に、私は現在、すべてのアクションの前に実行する必要のあるコントローラリスナーを実装しようとしてる
class AuthenticationListener
{
/**
* @var TokenStorage
*/
private $tokenStorage;
/**
* @var $controller
*
* Controller that is accessed
*/
private $controller;
/**
* @var string $class full class path of controller
*/
private $class;
public function __construct(TokenStorage $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
public function onKernelController(FilterControllerEvent $event)
{
// Get controller after redirect here?
$this->controller = $event->getController()[0];
$this->class = get_class($this->controller);
}
}
をしかし、リダイレクトがある場合には、このリスナーが受信ユーザーがターゲットとするコントローラの代わりにRedirectControllerを使用します。リダイレクトの後に来るコントローラの名前を得るためにとにかくありますか?
FilterControllerArgumentsEventを使用して、リダイレクト先のルート名を取得できます。しかし、実際のコントローラーは少し難しいものになるでしょう。 – Cerad
これは望ましくありません。なぜなら、routing.yml内のルートとリスナー間の暗黙的な結合を作成するからです。 URLのパスを変更すると、2つの場所でURLを変更する必要があります。 – markvdlaan93
さて、なぜリダイレクトされたコントローラを取得しようとしていますか?結局のところ、最終的にリダイレクトが発生し、コントローラを取得します。 – Cerad