2012-10-29 5 views
0

ctools 다단계 마법사를 작성하려고합니다. 여기에 내 마법사 기능이 있습니다.drupal ctools 다단계 마법사

function _mymodule_adv_wizard($js=NULL, $step="step1") { 

    $form_info = array(); 
    $form_info["id"]    = SK_ADV_WIZARD_ID; 
    $form_info["path"]   = "tests/adv/mymodule/%step"; 

    $form_info["show trail"]  = TRUE; 
    $form_info["show back"]  = TRUE; 
    $form_info["show cancel"]  = TRUE; 
    $form_info["show return"]  = TRUE; 

    $form_info["next callback"] = "_my_module_adv_wizard_on_next"; 
    $form_info["finish callback"] = "_my_module_adv_wizard_on_finish"; 
    $form_info["cancel callback"] = "_my_module_adv_wizard_on_cancel"; 

    $form_info["order"]   = array("step1" => t("Stap 1"), "step2" => t("Stap 2"), "step3" => t("Stap 3"), "step4" => t("Stap 4"), "step5" => t("Stap 5"), "step6" => t("Stap 6"), "step7" => t("Stap 7"), "step8" => t("Stap 8")); 

    $form_info["forms"]   = array(); 
    $form_info["forms"]["step1"] = array("form id" => "_my_module_adv_step1_form"); 
    $form_info["forms"]["step2"] = array("form id" => "_my_module_adv_step2_form"); 
    $form_info["forms"]["step3"] = array("form id" => "_my_module_adv_step3_form"); 
    $form_info["forms"]["step4"] = array("form id" => "_my_module_adv_step4_form"); 
    $form_info["forms"]["step5"] = array("form id" => "_my_module_adv_step5_form"); 
    $form_info["forms"]["step6"] = array("form id" => "_my_module_adv_step6_form"); 
    $form_info["forms"]["step7"] = array("form id" => "_my_module_adv_step7_form"); 
    $form_info["forms"]["step8"] = array("form id" => "_my_module_adv_step8_form"); 

    $form_state = array("ajax" => FALSE, "object_id" => SK_ADV_OBJECT_ID, "object" => new stdClass()); 

    //initialize ctools wizard 
    ctools_include("wizard"); 
    $form = ctools_wizard_multistep_form($form_info, $step, $form_state); 
    return theme('my_module_wrapper', array('formwrapper' => $form, 'page' => $step)); 
} 

모든 것이 잘되고 페이지에 액세스 할 수 있지만 단추가 인쇄되지 않아 제출 및 유효성 검사 기능을 수행 할 수 없습니다. diff가있는 또 다른 마법사가 있습니다. id와 form defs하지만 매력처럼 작동합니다. 이유는 무엇 일 수 있습니다.

p.s. 모든 함수와 변수는 위의 코드에서 선언됩니다.

답변

1

의견 상자가 충분하지 않기 때문에 답변이 아닌 답변으로 게시됩니다.

가장 좋은 추측은 원 버튼에 버튼을 추가해야한다는 것입니다.

function _my_module_adv_step1_form($form, &$form_state){ 
    ... your form elements... 
    $form['next'] = array(
    '#type' => 'submit', 
    '#value' => t('Next'), 
    '#submit' => array('_my_module_adv_wizard_on_next'), 
); 
} 
+0

귀하의 의견을 보내 주시면 감사하겠습니다.하지만 해결책이 될 수 있지만 일반적으로 ctools 마법사는 버튼을 자동으로 렌더링합니다. 이상한 것은 동일한 모듈에 다른 마법사가 있고 단추가 있다는 것입니다. ctools의 wizard.inc에서 디버깅 중이며 버튼이 폼 배열에 삽입되었는지 확인할 수 있습니다. 미쳤어 !! – eyurdakul

3

첫 번째 단계에서 양식 배열을 재설정 하시겠습니까?

function _my_module_adv_step1_form($form, &$form_state){ 
    $form = array(); // this remove your submit-buttons. Delete this line and your bottons will appear. 
    //... your form elements... 
} 
+0

아니요, & $ form이 참조로 전달되었으므로 작성하지 않았습니다. – eyurdakul