В приложениях Symfony, контроллеры, которые используют базовоый класс Controller могут получить объект текущего пользователя посредствам метода getUser():
use Symfony\Bundle\FrameworkBundle\Controller\Controller; class DefaultController extends Controller { public function indexAction() { $user = $this->getUser(); // ... } }
В прошлом, вы могли также получить текущий объект запроса посредствам метода getRequest()
, который был объявлен устаревшим в Symfony 2.4 в пользу параметра Request
:
use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; class DefaultController extends Controller { public function indexAction(Request $request) { ... } }
В Symfony 3.2, мы добавили новый указатель пользователя, что позволяет получить текущего пользователя в любом контроллере через параметр, и мы не рекомендуем использовать метод Controller::getUser()
, потому как он будет удален в Symfony 4.0:
use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\Security\Core\User\UserInterface; class DefaultController extends Controller { // when the user is mandatory (e.g. behind a firewall) public function fooAction(UserInterface $user) { ... } // when the user is optional (e.g. can be anonymous) public function barAction(UserInterface $user = null) { ... } }
Эта функция использует механизм аргумент-резольвера, который был введен в Symfony 3.1. Этот механизм позволяет регистрировать собственные значения резольверов для аргументов контроллера.