Többfunkciós form

makgab képe

Hi!

Egy "többfunkciós" formot szeretnék készíteni, aminek a lényege, hogy lenne egy form1 aminek a mezőit felhasználom a form2-n, amit postolás után majd a form3-on.
Elvben ez működik, ugye? Vagy másképp érdemes?

G.

<?php
// mymodule.inc
 
function mymod_add1_form() {
...
}
 
function mymod_add1_form_validate() {
...
}
 
function mymod_add1_form_submit() {
$form_state['redirect'] = '/base/menu/add2'; 
...
}
 
function mymod_add2_form() {
...
}
 
function mymod_add2_form_validate() {
...
}
 
function mymod_add2_form_submit() {
$form_state['redirect'] = '/base/menu/add3'; 
...
}
 
function mymod_add3_form() {
...
}
 
function mymod_add3_form_validate() {
...
}
 
function mymod_add3_form_submit() {
...
}
 
?>
Drupal verzió: 
makgab képe

Ez alapján próbálom: http://drupal.hu/forum/sql-lek%C3%A9rdez%C3%A9s

Nem jelenik meg a form (imozgas_add2_form), posztolás (submit) után ugyanott marad (imozgas_add_form):

<?php
 
// .module
  $items['ibase/muveletek/mozgas'] = array(
    'page callback' => 'drupal_get_form',
    'page arguments' => array('imozgas_add_form'),
    'access callback' => 'user_access',
    'access arguments' => array('mod'),
    'file' => 'mozgas.inc',
    // 'type' => MENU_CALLBACK,
    // 'weight' => -2,
  );
 
  $items['ibase/muveletek/mozgas/imozgas_add2_form/%'] = array(
    'page callback' => 'drupal_get_form',
    'page arguments' => array('imozgas_add2_form', 4),
    'access callback' => 'user_access',
    'access arguments' => array('mod'),
    'file' => 'mozgas.inc',
    'type' => MENU_DEFAULT_LOCAL_TASK,
 
 
// mozgas.inc
function imozgas_add_form() {
  $res = db_query( "SELECT ..." );
  while ( $record = db_fetch_array( $res ) ) {
    $res_arr[$record['id']] = $record['nev'];
  }
  $form['honnan_id'] = array(
  '#type' => 'select',
  '#title' => 'Honnan',
  '#required' => TRUE,
  '#options' => $res_arr,
  );
 
  $form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Tovább'),
  );
 
  return $form;
}
 
 
function imozgas_add_form_validate($form, &$form_state) {
  // nincs ellenorzes
}
 
function imozgas_add_form_submit($form, &$form_state) {
  // form adatok
  $adat = $form_state['values']['honna_id'];
  $form_state['redirect'] = 'ibase/muveletek/mozgas/imozgas_add2_form/' . $adat;
} 
 
function imozgas_add2_form($form_state, $adat) {
  $adat = check_plain($adat);
  $form['honnan_id'] = array(
  '#type' => 'hidden',
  '#value' => $adat,
  );
 
  $form['markup'] = array(
  '#type' => 'markup',
  '#value' => 'Honnan: ' . $adat,
  );
 
  $form['megj'] = array(
  '#type' => 'textfield',
  '#title' => 'Megjegyzés',
  ); 
 
  $form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Save'),
  );
 
  return $form;
} 
 
//... stb.
 
?>
0
0
Pasqualle képe

pedig ez a kod jonak tunik.
1. probald meg a menut ujraepiteni (admin/build/modules oldalon nyomj egy mentest)

2. probald meg drupal_goto()-val, hogy mukodik e

$form_state['redirect'] = 'ibase/muveletek/mozgas/imozgas_add2_form/' . $adat;

drupal_goto('ibase/muveletek/mozgas/imozgas_add2_form/' . $adat);
0
0
makgab képe

egy másik modulomban szépen megy. :(

Egyik verzió sem jött be. A drupal_goto()-ra is ugyanaz.
Egy "drupal_set_message('Teszt.');" sorral teszteltem, hogy eljut-e a függvényig.
Rendben is volt, csak a redirect nem stimmel...

0
0
pp képe

Ha a böngészőbe közvetlenül beírod az útvonalat egy tetszőleges $adattal akkor mi van?

0
0
makgab képe

Ha ezt beirom a böngészőbe:

               http://..../?q=ibase/muveletek/mozgas/imozgas_add2_form/99

akkor megjön amit szeretnék. :)

Ez azt jelenti, hogy a paraméter nem megy át? :O
(Akkor valahol hiba van a kódban (mégis?). :)

0
0
makgab képe

én balga, hát nem figyeltem... egy karakter lemaradt. :)
ugye, aki nem figyel. :)

<?php
 
function imozgas_add_form_submit($form, &$form_state) {
//  $adat = $form_state['values']['honna_id'];    // ez a sor helyesen:
  $adat = $form_state['values']['honnan_id'];
  $form_state['redirect'] = 'ibase/muveletek/mozgas/imozgas_add2_form/' . $adat;
} 
 
?>
0
0