drupal ctools 多步向导

Posted

技术标签:

【中文标题】drupal ctools 多步向导【英文标题】:drupal ctools multistep wizard 【发布时间】:2012-10-29 14:00:32 【问题描述】:

我正在尝试编写一个 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));

一切都很好,我可以单独访问页面,但没有打印按钮,所以我不能去提交和验证功能。我有另一个具有差异的向导。 id 和 form defs 但它就像一个魅力。可能是什么原因。

附言所有函数和变量都在上面的代码中声明。

【问题讨论】:

【参考方案1】:

您是否在第一步重置表单数组?

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...

【讨论】:

【参考方案2】:

这不是答案,而是作为答案发布,因为评论框不足以解决此问题。

我最好的猜测是您需要在您的韩元上添加按钮。

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'),
  );

【讨论】:

感谢您的评论,这将是一个解决方案,但通常,ctools 向导会自动呈现按钮。奇怪的是我在同一个模块中有另一个向导,它有按钮。我正在 ctools 的wizard.inc 中进行调试,我可以确认按钮已插入到表单数组中。生气了!!!!

以上是关于drupal ctools 多步向导的主要内容,如果未能解决你的问题,请参考以下文章

Drupal Commerce 以模态显示结帐

drupal 7:页面管理器/面板和 hook_node_view

快速编辑模块在drupal 7.5中不起作用

在DevExpress中使用WizardControl控件构建多步向导界面

如何从 Drupal 7 向 Drupal 8 贡献一个模块

Drupal 9 | Drupal.org