web-dev-qa-db-ja.com

フォーム送信後にリダイレクト

Drupal 8でカスタムフォームを作成します。Drupal 7でカスタムパスハンドラにset $form_state['redirect'] = 'mycustompath';を設定すると、 Drupal 8?でフォームを送信した後にユーザーをリダイレクトする方法

私はsubmitFormメソッドを使用する必要があることを知っています:

public function submitForm(array &$form, FormStateInterface $form_state)
{
   //submissions jobs ...
   //redirect path
}
15
Yusef

「submitForm」メソッドで、以下のコードを記述します

 $form_state->setRedirect('machine_name');
 return;

どこ machine_nameは、ルーティングファイルに記述されているマシン名です。

これが役に立てば幸いです。

31
parth.k

Buildformで設定する場合は、次のようなルーティングパスを使用する必要があります。

use Drupal\Core\Url;

$url = Url::fromRoute('route.path');
$form_state->setRedirectUrl($url);
8
vgoradiya

ユーザー編集フォームをホームページまたは他のページにリダイレクトする場合は、以下のコードに従ってください。

まず、add-hook-hook_form_alter`

function yourmodulename_form_alter(&$form, FormStateInterface $form_state, $form_id) 
{
    if ($form_id === 'your form id') {
    $form['actions']['submit']['#submit'][] = 'modulename_user_edit_form_submit';
  } 
}

関数の下にフックを追加した後

function modulename_user_edit_form_submit($form,  FormStateInterface &$form_state) {
  global $base_url; //set base path
  $response = new Symfony\Component\HttpFoundation\RedirectResponse($base_url ."/xyz"); //set url
  $response->send();
  return;
}

これがお役に立てば幸いです。

0
prashant