문제

Drupal 모듈 페이지가 있으며 사용자가 업로드 할 수있는 파일 세트의 사용 가능한 부분 목록이 포함 된 드롭 다운으로 양식을 채우고 있습니다. 사용자가 특정 유형의 파일을 업로드하면 목록에서 해당 옵션이 제거되며 사용 가능한 모든 파일이 업로드되면 양식이 렌더링되지 않습니다.

문제는 Drupal이 제출 작업을 수행하기 전에 양식을 작성하고 있다는 것입니다. 따라서 페이지를 다시로드 할 때까지 작업이 작동하지 않은 것으로 보입니다.

이것을 다루는 일반적인 방법은 무엇입니까? 페이지로 이동하려면 form_state [ 'Reliprect']를 설정하는 것은 작동하지 않는 것 같습니다.

도움이 되었습니까?

해결책

양식 상태에 대한 정보를 저장하도록 양식을 수정합니다. 그런 다음 모든 파일을 업로드하지 않은 경우 즉시 반환하는 제출 기능의 시작 부분에 새 사례를 추가하면 양식을 다시 작성합니다.

function modulename_uploader_form(&$form_stuff=null) {
//the function that sets your form array
$stuff = (isset($form_stuff['values'])) ? 
    $form_stuff['storage']['done_uploading'] : 
    false; //if values isnt set, this is the first visit. 
$form_stuff['storage']['done_uploading'] = done_uploading();
.... the rest of your form creation function.


function modulename_uploader_submit($form, &$form_stuff) {
    if($form_stuff['storage']['done_uploading']) {
return;
}
... rest of the function

양식 처리가 완료된 경우 스토리지 변수를 설정하지 마십시오. Drupal에서 Google 멀티 페이지 양식도 할 수도 있습니다.

다른 팁

제출 핸들러에서 $ form_state [ 'Reliprect']를 설정하면 이전 데이터없이 양식이 새로 고침됩니다. 오래된 값이 기본값으로 매달리지 않도록 양식을 지우는 방법입니다.

양식 작성 기능을 사용하여 양식 작성 기능을 사용하여 양식 제출 처리기를 실행 한 후 다른 필드에서 더 많은 필드를 추가하거나 다른 필드에서 옵션을 제거 할 수있는 $ form_state [ 'Rebuild']를 사용하고 싶을 것입니다.

이 블로그 게시물 D6에서 다중 단계 양식을 수행하는 것에 대한 대략적인 자습서가 있습니다. Drupal 5 ~ 6 업그레이드 문서 drupal.org에는 $ form_state의 작동 방식과 다양한 플래그에 대한 유용한 개요가 포함되어 있습니다.

문제는 Drupal이 제출 작업을 수행하기 전에 양식을 작성하고 있다는 것입니다. 따라서 페이지를 다시로드 할 때까지 작업이 작동하지 않은 것으로 보입니다.

믿을 수 없어. 그것에 대해 확신합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top