Новое в Symfony 3.2: Получение значения User в контроллерах

В приложениях 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. Этот механизм позволяет регистрировать собственные значения резольверов для аргументов контроллера.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

шесть + 18 =