web-dev-qa-db-ja.com

外部URLにリダイレクトするにはどうすればよいですか?

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の理想的な同等物は何ですか?

7
Tanay Sai

コントローラーのルート名を使用:

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
}
22
rpayanm

return new RedirectResponse($absolute_url);は動作するようです

1
Tanay Sai