2012-10-29 52 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)); 
} 

一切都很好,我可以seperately訪問頁面,但按鈕沒有得到印刷,所以我不能去提交和驗證功能。我有另一個差異嚮導。 ID和形式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 wizard會自動呈現按鈕。奇怪的是我在同一模塊中有另一個嚮導,它有按鈕。我正在調試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

nope,&$ form是通過引用傳遞的,我不創建它 – eyurdakul