Symfony перенаправляет на маршрут после сервисной логики

Я получаю токен доступа из социальной сети с помощью HWIO Bundle и для перенаправления после вызова службы. Я попытался добавить маршрутизатор в службу:

<argument type="service" id="router" />
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\User\UserInterface;

class UserProvider implements OAuthAwareUserProviderInterface
{
    protected $router;

    public function __construct(RouterInterface $router)
    {
        $this->router = $router;
    }

    public function connect(UserInterface $user, UserResponseInterface $response)
    {
        $service = $response->getResourceOwner()->getName();
        $serviceProvider = $service."Provider";

        $user = $this->$serviceProvider->setUserData($user, $response);
        $grabProject = $this->grabProject->grabProject($response->getAccessToken(), $user);

        return new RedirectResponse($this->router->generate('application_frontend_default_index'));
     }

после моего действия я включаю контроллер HWIO Bundle в connectServiceAction

public function connectServiceAction(Request $request, $service)
{

Может быть, нужно перезаписать этот контроллер и действие, как это сделать?


person shuba.ivan    schedule 03.02.2016    source источник
comment
Вставьте нам код того, где используется ваш метод connect. Кроме того, обычно не рекомендуется генерировать ответы в службах, это роль контроллера для перенаправления возвращаемых ответов.   -  person Terenoth    schedule 03.02.2016
comment
Я обновляю вопрос? может быть, нужно перезаписать это действие?   -  person shuba.ivan    schedule 03.02.2016


Ответы (1)


Контроллер не перенаправляет, потому что вы не return возвращаете RedirectResponse вашим методом при его вызове. Если вам нужно быстрое исправление, чтобы заставить его работать, просто замените:

$this->container->get('hwi_oauth.account.connector')->connect($currentUser, $userInformation);

by:

return $this->container->get('hwi_oauth.account.connector')->connect($currentUser, $userInformation);

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

person Terenoth    schedule 03.02.2016