Я предполагаю, что вы расширяете контроллер Symfony по умолчанию? Если это так, то при взгляде на код откроется ответ:
namespace Symfony\Bundle\FrameworkBundle\Controller;
use Symfony\Component\DependencyInjection\ContainerAware;
class Controller extends ContainerAware
{
Обратите внимание, что не определена конструкция Controller :: __, поэтому использование parent :: __ никуда вас не приведет. Если мы посмотрим на ContainerAware:
namespace Symfony\Component\DependencyInjection;
class ContainerAware implements ContainerAwareInterface
{
protected $container;
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
}
Опять же, конструктор и контейнер недоступны, пока не будет вызван setContainer. Поэтому переопределите setContainer и поместите туда свою логику. Или же просто создайте отдельный контроллер, который не расширяет базовый класс контроллера, и вставьте ваши зависимости непосредственно в конструктор.
Обновление: август 2017
Все еще получаю несколько показов. Если вы действительно хотите выполнить что-то перед каждым контроллером, используйте прослушиватель контроллера ядра. Если все, что вам нужно, это пользователь, то, конечно, используйте getUser (). И, пожалуйста, не переопределяйте setContainer (). В некоторых случаях это сработало бы, но просто запутало ваш код.