1

ログに記録されたユーザーが特定のプロパティを持っているかどうかを確認し、現在のルートを確認するためのロジックを配置するのに最適な場所を探しています。これに基づいて、ユーザーを特定のルートにリダイレクトしたいと思います。

MyUserはSonataUserを拡張し、次のような追加のメソッドを持っています。

class User extends BaseUser
{
    /**
     * @return boolean
     */
    public function hasProperty()
    {
        ...

さらに、私はルートを持っています:

route_a:
    pattern: /a
route_b:
    pattern: /b

で、もし:

if ($user->hasProperty() && $currentRoute == 'route_a') {
    redirectTo('route_b');
}
if (!$user->hasProperty() && $currentRoute != 'route_a') {
    redirectTo('route_a');
}

kernel.controllerイベントのリスナーでそれを実行しようとしました。このリスナーでは、init()コントローラーメソッドのようなものを呼び出し、そのロジックをこのメソッドに配置しました。正常に動作しますが、応答をリダイレクトできません。

このロジックに最適な場所はどこですか?

4

1 に答える 1

0

この解決策を試しましたか:ユーザーがログインしている場合はリダイレクトします

Bundle に Listener クラスを作成し、このリスナーをサービスとして定義する必要があります。

于 2013-04-03T11:06:13.120 に答える