Form -> megerősítés -> feldolgozás

eMeLA képe

Szerbusztok !

Megakadtam egy aprócska dolgon, aminek a megoldása valószínű igen egyszerű (csak nekem nem az :)

Egy form-ot szeretnék feldolgozás előtt a flhasználóval megerősíttetni, hogy biztos el akarja-e küldeni.

A Forms API Quickstart Guide-ban csak Validating-et és Submitting-et találtam.
A függvények között pedig confirm_form()-ot.
A probléma az, hogy hová kellene beépíteni a confirm_form()-ot (merthogy egyik hely sem alkalmas rá, mivel másra szolgál).

A form feldolgozását ( $form['#action'] = url('megrendel/confirm') + megrendel_menu() megfelelő beállításával) árirányítom egy függvényhez ahol van a confirm_form(). Ennek a formnak a feldolgozásánál tudnám a korábbi form adatait is feldolgozni. A probléma az, hogy a confirm_form() is form, hogyan tudom a alap formot vele továbbküldeni ? Na itt nekem ez már túl bonyorult.
(lehet, hogy nem teljesen egyértelmű a leírásom...)

Biztos, hogy van ennél egyszerűbb megoldás is ?
Ezügyben fordulok hozzátok !

Hojtsy Gábor képe

Nincs olyan beépített visszaigazolás kérő űrlap, amivel át lehetne tekinteni egy lapon a beírt adatokat. Amire neked van szükséged azt szerintem programozni kell. A kapott űrlapból csinálj egy hasonlót, csak sima szöveget jeleníts meg az űrlap beviteli mezők helyett, az értékeket pedig rakd munkamenetbe vagy rejtett űrlapmezőkbe (inkább rejtett űrlapmezőkbe). Tegyél egy submit gombot az aljára, fölé meg egy kérdést, hogy megfelelnek-e a látott adatok.

0
0
eMeLA képe

Sikerült összehoznom, de !

A hibakezelés résznél, ha hiba történik a mail küldésnél, a $text változóba nem kerül be a _megrendel_adatok() függvény tartalma, hanem az elötte lévő hibaüzenetet kiírja, és behozza az alapoldalt, a megrendel_lap_form() tartalmát. Annyit sikerült kiderítenem, hogy hiba esetén a _megrendel_adatok ()-ból nem tér vissza, magában a függvényben összeállítja a táblázatot, de ahelyet, hogy a return-nal visszatérne az alapoldalt tölti be ! Lehet, hogy amikor összeállítja a táblázatot, akkor kapja a drupal a hibaüzenetet és megszakítja a folaamatot ?

Vajon mitől lehet ez ?

function megrendel_lap () {
  $op = $_POST['op'];
  switch ($op) {
    case 'Előnézet' :
      drupal_set_message(t('Kérjük figyelmesen...'));
      $text = megrendel_igazol_form ();
    break;
    case 'Vissza' :
      $text = megrendel_lap_form();
    break;
    case 'Elküld' :
         $edit = $_POST['edit'];
         $mess = megrendel_lap_elkuld ($edit);
 
         if ($mess == FALSE) ) {     //--------------- hibakezelés 
   		 drupal_set_message(t('Hiba...'), "error");
         $text = _megrendel_adatok ($edit, "form");
 
         }
         else {
   	     drupal_set_message(t('A megrendelőlapot...továbbítottuk.'));
         $form['submit'] = array('#type' => 'submit','#value' => t('Új megrendelés'));
         $text = drupal_get_form('megrendel_uj', $form);
         }
 
    break;
    default:
      $text = megrendel_lap_form();
    break;
  }
 
	return $text;
}
0
0

...mit tudok: http://web.termuves.hu

Hojtsy Gábor képe

Olyan szerencsére nincs, hogy a Drupal megszakítja a függvényed futását. Azt tudom elképzelni, hogy valahol a _megrendel_adatok()-ban van egy kód, ami mégis visszatér, vagy a megrendel_lap_form()-ot adja vissza, vagy ilyesmi.

0
0
eMeLA képe

Két tanulság:

1. éjszaka az ember ne keresse a hibákat, hanem mennyen lefeküdni :)
2. ha két gomb van akkor ez egyik se legyen SUBMIT-két definiálva, mert furcsaságokat fog művelni a Drupál :)

Hozzá kell tenni, hogy a sima Előkép kérésekor jól működött a drupal_get_form(), míg amikor a hidaüzenetnél újra meghívtam, akkor megakasztotta, illetve nem készítette el a formot a SUBMIT gomb....

-----------------------------

Ja, és aki megesősítés akar form elküldése előtt, az tanulmányozza a fenti kódot.

A megrendel_lap()-ra a megrendel_menu() rész mutat.

-----------------------------

Köszönöm a segítséget !

0
0

...mit tudok: http://web.termuves.hu