Drupal 7には、外部URLへのリダイレクトを可能にするdrupal_goto()があります。
変更レコードは、ControllerBase :: redirectがD8で呼び出されるメソッドであることを示していました。 https://www.drupal.org/node/2023537
これは内部drupal URLで機能するようですが、外部http URLでエラーをスローします-
[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
外部URLにリダイレクトするためのD8のdrupal_gotoの理想的な同等物は何ですか?
コントローラーのルート名を使用:
use Drupal\Core\Controller\ControllerBase;
class MyControllerClass extends ControllerBase {
public function foo() {
//...
return $this->redirect('user.page');
}
}
絶対URLを使用:
return new RedirectResponse('https://google.com');
フォームではRedirectResponse
は機能しません。
ルート名:
public function submitForm(array &$form, FormStateInterface $form_state) {
//...
$form_state->setRedirect('user.page');
}
絶対URLを使用:
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);
は動作するようです