2013-02-15 4 views
1

Я ищу лучшее место, чтобы поместить мою логику для проверки, имеет ли зарегистрированный пользователь определенное свойство и проверяет, каков текущий маршрут. Исходя из этого, я хотел бы перенаправить пользователя на конкретный маршрут.Symfony2 проверить зарегистрированное свойство пользователя, текущий маршрут и перенаправить

Мой Пользователь расширяет соната пользователя и имеет дополнительный метод, как:

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(), и я помещал th по логике в этом методе. Это нормально, но я не могу перенаправить ответ.

Какое место лучше всего подходит для этой логики?

ответ

0

ли вы попробовать это решение: Redirect if the user is logged in

Вы должны создать класс слушателя в Bundle и определить этот приемник в качестве службы.