2017-10-30 5 views
0

양식을 다시 설정하려고 했으므로 제출되지 않은 상태로 Drupal 8에 표시됩니다. 지금까지는 사용할 수있는 메소드 (setSubmitted()를 FALSE 옵션없이 TRUE로 하드 코드)를 찾을 수 없어이 작업을 수행 할 수 없었습니다. 그 이유는 전체 제출이 아니라 다른 필드가있는 다른 페이지로 사용자가 리디렉션되기를 원하면 하나의 필드를 제출하는 것이므로이 보조 양식에서 첫 번째 필드에서 얻은 값을 사용하기를 원합니다. 단계.제출 처리기에서 제출 된 상태를 제거하십시오.

내가 리디렉션이 사용하는 첫 번째 부분에 대한 제출 처리기에서

:

$form_state->setRedirect('my.route', [], []); 

을 그리고 이것은 작동하지만 양식이 두 번째 양식을 (보인다) 두 번째 양식이 생각하는 것을에 도달 할 때 제출하다 . 결과적으로 두 번째 양식에 추가하는 제출 버튼이 자동 제출되므로 사용자 이동이 어려워집니다. 는 I가 시도 첫 번째 부분에 대한 제출에

:

$form_state->setRebuild(TRUE); 
$form_state = new FormState(); 
unset($form_state); 

아무 소용 다양한 구성 위를했습니다. 그것들은 이후에 내가 작성한 setRedirect 호출을 예방/무시합니다. 이 방법을 원한다/필요로하는 이유는 사용 된 POST 메서드를 유지하려고하기 때문입니다.

+0

다단계 양식 접근 방식을 시도해 볼 수도 있습니다. [answer] (https://drupal.stackexchange.com/a/93747/26231)와 [tutorial (https : // www. sitepoint.com/how-to-build-multi-step-forms-in-drupal-8/). – EricLavault

+0

@EricLavault 예 예전과 비슷한 것을 보았습니다. 문제는 블록 형식의 양식과 페이지 형식 양식이 필요하다는 것입니다. 이것이 올바르게 다단계 임에도 불구하고, 공유 한 예 (그리고 내가 본 다른 예)는 그 자체로 상쾌한 형태 (같은 URL 사용)를 가지고 있다고 믿습니다. 이 사용 사례의 경우 두 번째 부분을 다른 주소에서 수행해야하며 데이터를 게시하고 수집해야합니다. – user1360809

답변

0

코어 검색 모듈의 기능과 비슷한 것을 원하십니까? 단순한 SearchBlockForm은 데이터를 더 복잡한 SearchPageForm으로 보냅니다. (당신이 POST를 사용할 수 있지만)

SearchBlockForm

GET 방법을 사용

$form['#method'] = 'get'; 

has no id and token fields :

function search_form_search_block_form_alter(&$form, FormStateInterface $form_state) { 
    $form['form_build_id']['#access'] = FALSE; 
    $form['form_token']['#access'] = FALSE; 
    $form['form_id']['#access'] = FALSE; 
} 

을 BTW, 마지막 변경하면 콜백을 제출 실행되지 않도록 할 수 있습니다.

희망이 도움이됩니다.