양식 제출 후 리디렉션


15

Drupal 8에서 사용자 정의 양식을 작성합니다. 사용자 $form_state['redirect'] = 'mycustompath';정의 제출 핸들러에서 설정 하여 Drupal 7에서 사용자 정의 경로로 경로 재 지정할 수 있지만 Drupal 8에서 양식 제출 후 사용자를 재지 정하는 방법은 무엇입니까?

나는 submitForm방법을 사용해야한다는 것을 안다 .

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

답변:


30

"submitForm"메소드에서 아래 코드를 작성하십시오

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

machine_name라우팅 파일에 언급 된 시스템 이름은 어디 입니까?

이게 도움이 되길 바란다 .. :)


작동하지. 내 맞춤 route를 시도 $form_state->setRedirect('/start');return;하고 홈 페이지로 리디렉션한다고 가정하겠습니다. 정확한 스 니펫이란 무엇입니까?
Yusef

1
$ form_state-> setRedirect ( '<front>'); 반환;
parth.k

'/ start'가되어서는 안됩니다. 라우팅 파일에 언급 된 별명입니다.
parth.k

'<front>'경로 별칭에 대해 무엇을 했습니까? 이것은 나의 길이다tcdev.content: path: '/start' defaults: _controller: 'Drupal\tcdev\Controller\TrainingCenterController::content' _title: 'Start Training Center' requirements: _permission: 'access content'
Yusef

$ form_state-> setRedirect ( 'tcdev.content') 여야합니다.
parth.k 2016 년

8

빌드 폼에서 설정하려면 다음과 같은 라우팅 경로를 사용해야합니다.

use Drupal\Core\Url;

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

URL의 네임 스페이스 란 무엇입니까? Url' not found
Yusef

해야한다 use Drupal\Core\Url;(앞의 슬래시없이)
ummdorian

$form_state->setRedirectUrl($url);submitForm ()에서도 사용할 수 있습니다.
Shaun Dychko

API를 확인하십시오 api.drupal.org/api/drupal/...를 . setRedirect ()는 먼저 경로를 URL로 변환 한 다음 setRedirectUrl ()을 호출합니다.
초 부정

0

사용자 편집 양식을 홈 페이지 또는 다른 페이지로 리디렉션하려면 아래 코드를 따르십시오.

먼저 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;
}

도움이 되길 바랍니다.


처리기 이후에 실행되어야하는 모든 제출 처리기를 무시하지 않습니까?
joekers

$form_state->setRedirect()다른 모든 제출 핸들러를 처리 할 수 ​​있도록 제출 양식 만 있어야 합니다.
joekers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.