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?
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
}
return new RedirectResponse($absolute_url);
semble fonctionner