A problémám a következő:
Készítenem kell egy online regisztrációs űrlapot egy konferenciához, amelynél a jelentkezők személyes adatainak megadásán túl be kell jelölniük, mely workshop(ok)on szeretnének részt venni, illetve hogy diákok-e vagy felnőttek. A részvételi díj ezen attribútumok függvénye.
Ehhez létrehoztam egy két lapból álló webformot. Az első lapon szerepelnek a fent már leírt beviteli mezők, a második lapon pedig egy összegzés, ahol kiírja az első lapon megadott adatokat (ha elrontotta, még vissza tudjon lépni), és a részvételi díjat, amit ezek alapján kalkulál ki a rendszer. Ehhez a második lapon egy markup (jelölő) űrlapelemet vettem fel, ebbe ugyanis lehetőség van php kódot is írni, illetve innen az első lapon felvett adatok is lekérhetők a $_POST tömbből.
Szeretném azonban letárolni egy űrlap elemben magát a kikalkulált részvételi díj végösszegét is. Erre nem találtam megoldást. Arra gondoltam, hogy létrehozok ehhez egy hidden elemet, de abba nem enged php kódot írni.
Valahol olvastam, hogy ilyesmire való a hook_form_alter függvény, amihez egy modult kellene írni. Vagy van egyszerűbb megoldás is?
A honlapon 6.20-as Drupal működik, a Webform modul verziója pedig 6.x-3.9.
Webform kezelésre példa
Szia!
Külön modul írásával egy hasonló feladatot így oldottam meg. A kódot lerövidítettem, hogy csak egy rövid példa maradjon.
pelda.module:
pelda.js:
Nagyon köszönöm, végre valami
Nagyon köszönöm, végre valami, amin el tudok indulni :)
A hook_webform_submission_presave lesz valószínű a kulcs, amivel ezt a problémát meg lehet oldani.
A hook_webform_submission_presave függvénnyel kapcsolatban
A hook_webform_submission_presave függvénnyel kapcsolatban még az a kérdésem lenne, hogy a $node paraméter segítségével hogyan lehetne szűkíteni ennek a lefutását, hogy ne minden űrlapnál fusson le (ezen a honlapon több webform tartalom is van), hanem csak annál az egynél, ahol erre szükség van?
Gondolom, valahogy így kellene kezdeni:
Node object reference
Ez utóbbira itt megtaláltam a megoldást: http://drupal.org/node/49768