嘗試將特定內容類型的節點/添加表單更改爲多步表單。Drupal多步驟節點表單預防保存如果不在最後一步
(drupal6,CCK開發3倍(用於多組))
我不能換我的頭周圍就是如何防止形式從第1步的提交和轉型實際上是創建一個節點到第2步。
沒有可能性步驟是2現在,但我無法弄清楚如何防止保存。
我曾嘗試以下:
把$形式[「#提交」] =陣列(),然後加入我的[「#submit」]處理器(這不起作用,它仍然會保存)
也嘗試過只是空白返回而已,但仍然導致節點被保存。
* HOOK FORM ALTER */
function armormod_form_alter(&$form, $form_state, $form_id) {
//print_r($form);
//print_r($form_state);
//print_r($form_id);
if($form_id = "seed_node_form") {
//set the default step
if(!isSet($form_state["storage"]["step"])) {
$form_state["storage"]["step"] = 1;
}
// Add an after_build function to process when everything's complete.
$form['#after_build'][] = 'armormod_after_build';
/* clear the submit (this doesn't work)
Normally calls menu_node_form_submit and then upload_node_form_submit
*/
//$form["#submit"] = array();
$form["#submit"][] = "armormod_submit";
$form["#validate"][] = "armormod_validate";
}
}
function armormod_submit($form, &$form_state) {
if($form["form_id"]["#value"] == "seed_node_form") {
if($form_state["storage"]["step"] < 2) {
drupal_set_message("Form Step:".$form_state["storage"]["step"]);
return;
}
} else {
return $form;
}
}
function armormod_validate($form, &$form_state) {
if($form["form_id"]["#value"] == "seed_node_form") {
drupal_set_message(t("Validation Called"), "status");
return;
} else {
return $form;
}
}
/* AFTER BUILD LETS US MODIFY CCK FORM ELEMENTS */
function armormod_after_build($form, &$form_state) {
if($form["form_id"]["#value"] == "seed_node_form") {
if($form_state["storage"]["step"] == 2) {
drupal_set_message(t("Step 2 Build Called"), "status");
$form["group_statistics"]["#access"] = 1;
$form["buttons"]["submit"]["#value"] = "Save";
} else {
drupal_set_message(t("After Build Called"), "status");
//hide statistics group
$form["group_statistics"]["#access"] = false;
$form["buttons"]["submit"]["#value"] = "Next Step";
unset($form["buttons"]["preview"]);
//print_r($form);
}
}
return $form;
}
該模塊不支持使用cck的多組,也有一些字段需要在第一步中使用,以便在第二步中進行下拉值等。 – merlincam 2011-04-26 13:56:09