Sziasztok!
Talán kicsit túlzott bátorsággal, de nekifogtam egy olyan modul összerakásának, amivel a nem regisztrált felhasználók egy több részből álló formán első tartalmukat beküldhetik, majd az utolsó űrlaprészen adják meg a személyes adatokat (itt történik a regisztráció). Találtam erre több jónak tűnő leírást, amikben a Ctools Form Wizard-ját használják, úgymint ezt vagy ezt.
Első körben egy egészen egyszerűt szerettem volna összehozni (modal és ajax nélkül, néhány demo formmal), de rögtön beleálltam a talajba. A hook_menu() által létrehozott útvonal "Az oldal nem található"-t ad vissza. Ürítettem a cache-t, újraépítette a menü router táblát, de nem segített egyik sem. Alighanem valahol a page callback-ben meghívott függvénnyel lehet a gond, de hogy mi, azt nem tudtam kitalálni.
Ez szerepel a contentadd_register.module-ban:
<?php /** * Implements hook_menu(). */ function contentadd_register_menu() { 'title' => 'Multistep registration', 'page callback' => 'contentadd_register_ctools_wizard', 'access callback' => TRUE, 'file' => 'contentadd_register.inc', ); return $items; }
Ez pedig a contentadd_register.inc egy része:
<?php /** * Create callback for standard ctools registration wizard. */ function contentadd_register_ctools_wizard($step = NULL) { ctools_include('wizard'); ctools_include('object-cache'); 'id' => 'contentadd_register', 'path' => 'demo/%step', 'show trail' => TRUE, 'show back' => FALSE, 'show cancel' => TRUE, 'show return' => FALSE, 'next callback' => 'contentadd_register_subtask_next', 'finish callback' => 'contentadd_register_subtask_finish', 'cancel callback' => 'contentadd_register_subtask_cancel', ), 'form id' => 'contentadd_register_demo_1' ), 'form id' => 'contentadd_register_demo_2' ), 'form id' => 'contentadd_register_demo_3' ), ), ); $object_id = 1; contentadd_register_clear_cache($object_id); $step = 'test_1'; } $object = contentadd_register_get_cache($object_id); 'object_id' => $object_id, 'object' => &$object, ); $output = ctools_wizard_multistep_form($form_info, $step, $form_state); //$output = drupal_render($form); return $output; }
illetve ugyaninnen az első űrlap:
function contentadd_register_demo_1($form, &$form_state) { '#type' => 'textfield', '#required' => TRUE, ); return $form; } function contentadd_register_demo_1_submit(&$form, &$form_state) { $form_state['object']->name1 = $form_state['values']['name1']; }
Ha valaki tudna adni egy kis segítséget, hogy mi lehet a hiba, azt megköszönném.