web-dev-qa-db-fra.com

Comment rediriger vers une URL externe?

Drupal 7 a drupal_goto () qui permettrait de rediriger vers une URL externe.

L'enregistrement des modifications a indiqué que ControllerBase :: redirect est la méthode à appeler dans D8. https://www.drupal.org/node/2023537

Cela semble fonctionner avec les URL internes drupal mais génère une erreur avec les URL http externes -

[12-Nov-2014 21:00:22 Asia/Kolkata] Uncaught PHP Exception Symfony\Component\Routing\Exception\RouteNotFoundException: "Route "https://www.facebook.com/dialog/oaut....." does not exist." at /Applications/MAMP/htdocs/d8/core/lib/Drupal/Core/Routing/RouteProvider.php line 147

Quel serait l'équivalent idéal de drupal_goto dans D8 pour rediriger vers une URL externe?

7
Tanay Sai

Avec un nom de route sur un contrôleur:

use Drupal\Core\Controller\ControllerBase;

class MyControllerClass extends ControllerBase {

  public function foo() {
    //...
    return $this->redirect('user.page');
  }
}

Avec une URL absolue:

return new RedirectResponse('https://google.com');

Sur un formulaire RedirectResponse ne fonctionne pas, alors:

Avec un nom d'itinéraire:

public function submitForm(array &$form, FormStateInterface $form_state) {
  //...

  $form_state->setRedirect('user.page');
}

Avec une URL absolue:

public function submitForm(array &$form, FormStateInterface $form_state) {
  //...

  $form_state->setResponse(new TrustedRedirectResponse('https://google.com', 302));
  // You can change the response code from 302 to whatever you need
}
22
rpayanm

return new RedirectResponse($absolute_url); semble fonctionner

1
Tanay Sai