2013-12-18 2 views
0

Мой проект работает на symfony 2.3 с fosuserbundle. Я хочу, чтобы получить текущего пользователя в контроллереsymfony 2.3 Вызов функции-члена get() для не-объекта в функции __construct

$securityContext = $this->get('security.context'); 
$this->currentUser = $securityContext->getToken()->getUser(); 

и это работает, если я делаю это в indexAction(). Но мне нужен пользователь в каждой функции контроллера, поэтому я попытался поместить код в функцию __construct, и теперь он больше не работает.

Почему я не могу установить переменную в функции построения?

+0

Вы получаете ошибки? – klipach

+2

$ this-> getUser() - это все, что вам нужно. Взгляните на класс базового контроллера S2. Вы заметите, что он не имеет конструктора и что контейнер вводится позже с помощью метода setContainer. Это объясняет, почему размещение такого кода в конструкторе не будет работать. Но опять же, существующий метод getUser означает, что вам не нужно использовать consturcor в любом случае, – Cerad

+0

О, я вижу. Спасибо за быстрый ответ! – Kable

ответ

0

Внутри использования функции конструкция:

return $this->redirect('login'); 

Не используйте:

return $this->redirect($this->generateUrl('login')); 

Так что хотел бы это:

class DefaultController extends Controller 
    { 
    public function __construct() 
    { 
      return $this->redirect('login'); 
      exit; 

    } 

     /** 
     * @Route("/", name="home") 
     */ 
    public function indexAction(Request $request) 
     { 

     } 
    }