2016-02-03 3 views
0

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

<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) 
{ 

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

+3

Пожалуйста, вставьте нам код, где используется ваш метод 'connect'. Кроме того, как правило, плохой практикой является создание Repsonses в сервисах, это роль Контролера для перенаправления ответных ответов. – Terenoth

+0

Я обновляю вопрос? возможно, нужно перезаписать это действие? –

ответ

0

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

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

по:

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

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

+0

Я обновляю свой вопрос –