Drupal 8でカスタムフォームを作成します。Drupal 7でカスタムパスハンドラにset $form_state['redirect'] = 'mycustompath';
を設定すると、 Drupal 8?でフォームを送信した後にユーザーをリダイレクトする方法
私はsubmitForm
メソッドを使用する必要があることを知っています:
public function submitForm(array &$form, FormStateInterface $form_state)
{
//submissions jobs ...
//redirect path
}
「submitForm」メソッドで、以下のコードを記述します
$form_state->setRedirect('machine_name');
return;
どこ machine_name
は、ルーティングファイルに記述されているマシン名です。
これが役に立てば幸いです。
Buildformで設定する場合は、次のようなルーティングパスを使用する必要があります。
use Drupal\Core\Url;
$url = Url::fromRoute('route.path');
$form_state->setRedirectUrl($url);
ユーザー編集フォームをホームページまたは他のページにリダイレクトする場合は、以下のコードに従ってください。
まず、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;
}
これがお役に立てば幸いです。