Sziasztok!
Eljutottam odáig, hogy van a modulomban egy form. Csak azzal nem vagyok tisztában, hogy ezt hogy tudom feldolgoztatni a drupallal. Nézegettem más modulok forrását de nem tudtam belőle kitalálni. Ha valaki esetleg le tudná nekem írni, hogy mi ennek a folyamata és e modulom_form kampón kívűl még mire van szükségem egy form elküldéséhez akkor azért nagyon hálás lennék, mert ez elakasztott.
Előre is köszönöm!
Üdv:
Tibi
Fórum:
A modulom_form kampó úgy
A modulom_form kampó úgy tudom csak akkor kell ha saját tartalom típust definiálok. Én egy olyan formot csináltam ahol egy nevet egy helyet a könyvtár rendszerben kell megadni és ezt elküldve létrehoz egy könyvtárat az adott néven és adott helyen. A callback-ben megkapja a formot, de innen nem tudom, hogy action-t hogy kell neki adni vagy kell-e. Vagy ezt a drupal_get_form elintézi helyettem és csak paramétereznem kell a formot?
nem pontos
Szia
Ha modulod definiál egy új tartalom típust, akkor azt a hook_node_info() segítségével teszi.
A module kulcsnál lehet megadni, hogy mi az előtagja a tartalom típust kezelő függvényeknek.
...
'module' => 'modulom_tipusom'
...
Ilyenkor a modulom_tipusom_form() függvény által visszaadott űrlapot fogja használni a rendszer az add/edit műveletekhez.
A mennyiben a modulod egyéb ürlapokat (is) definiál akkor azt a hook_forms() kampóval teheti meg.
Itt nem konkrétan az űrlapokat kell megadni, hanem függvény neveket (callback) ahonnan meglehet szerezni magát az űrlapot.
Ami számodra a lényeg lesz az a
xxx_validate($form_id, $edit, $form)
xxx_submit($form_id, $edit)
használat:
$output = drupal_get_form('modulom_make_dir_form');
Szia,
Szia,
köszönöm a válaszodat. Nos akkor ha egy egyszerű formot szeretnék feldolgozni akkor ezek a lehetőségeim vannak? A hook_menu() kampóval létrehozott item[] menüponthoz callback arguments paramétereként tudom meghívni a formot?
pl.:
Én így tudom elképzeli a működését. A $form_id és a $edit itt mit jelől(az általad írt forrásban)?
Köszönöm válaszodat.
szerintem rosszul közelíted meg a dolgot.
a hook_menu-ben csak azt modnod meg, hogy melyik útvonalhoz melyik függvény fog tartozni, vagyis melyik függvény fogja feldolgozni az adott kérést.
a hook_menu-ben oldalakat (page) hozhatsz létre. Ez a feldolgozó függvény fogja kiíratni a formot, a többit a Drupal elintézi neked. Nem kell semmit tenned, csak ha a feldolgozás után másik oldalra akarsz eljutni.
No nézzük hogyan indulj el: (mégquickstartabb gájd)
fogd meg a quickstart-ban található függvényeket(csak a függvényeket a többi kódot hagyd ki!) és tedd bele egy modul fájlba!
Plusz még tegyél bele egy modulneve_menu függvényt:
Ha minden igaz ez megjelenít neked egy formot, ha a test útvonalat nézed ;)
Nempróbáltam, az rád vár ;)
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Szia, ezt a Forms API
Szia,
ezt a Forms API Quickstart Guide oldalt nem találtam egész eddig, köszönöm a linket és sz instrukciókat, azt hiszem ennyi elég lesz. De még az érdekelne hogy "a Drupal elintézi neked", hogy ezt hogyan intézi el?
Tibi
mit jelent, vagy hogyan? ;)
Az "elintézi neked" azt jelenti, hogy meghívja a megfelelő validate függvényt amiben már csak a plusz validálásokat kell végrehajtanod (a szükséges mezők meglétét ellenőrzi a Drupal) valamint a megfelelő submit függvényt is. Mindeközben lehetőséget biztosít más moduloknak, hogy beépüljenek a te formod feldolgozó mechanizmusába. ;)
Pontosan hogyan történik ez megnézheted az include/form.inc fájlban, nagyon szépen kommentezett kód.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Még azt szeretném
Még azt szeretném megkérdezni, hogy ha több form van egy modulon belül akkor azokat hogy tudom megkülömböztetni?
$form[1]
$form[2]
Vagy valami más módja van ennek?
form_id a Te barátod!
form_id ugye benne van a függvény nevekben...szerinted? ;)
A lényeg az, hogy egy modulon belül több form is lehet a lényeg a form_id, mert ez azonosítja a függvényeket is. PL. ha modulneve_formneve a form_id képzése. akkor a modul nevével kezdődik a függvényed, és a formokat is meg tudod különböztetni.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Nem teljesen értem, csak
Nem teljesen értem, csak addig, hogy a függvény nevében szerepeljen a $form_id, de nézegettem a
kódot és ezzel is meg lehet külömböztetni a formokat egy modulon belül nem?
Sziasztok! Mióta kaptam
Sziasztok!
Mióta kaptam tőletek pár tippet a drupal form kezelésével kapcsolatban, beleástam magamat a dokumentációkba. A drupal.org-on találtam a következőt:
Ennek a forrásnak az elejét már említettem korábban, csak a :
függvény nem egészen világos számomra, ha jól gondolom akkor ezzel a szerkezettel megoldható egy modulon belül több form kezelése. Ha lennétek olyan kedvesek megerősíteni ezt a gondolatomat.
T.
új lehetőség
A hook_forms a 5-ös Drupal egyik újdonsága. Lehetővé teszi, hogy ha van több formod, akkor azokat 1 függvénnyel állítsd elő, egy másikkal validáld, és egy harmadikkal dolgozd fel. Tehát nem kell minden formhoz modulnév_(form_id), modulnév_(form_id)_validate, modulnév_(form_id)_submit függvényeket megvalósítanod, hanem elég csak 1 hármas.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Szia PP,
Szia PP,
érdeklődni szeretnék az általad említett Drupal 5 újdonságia felől. A formkezelés területén, a változatosság kedvéért :)
Ezt a hármast, hogy érted, egy függvényen belűl form, validate, submit? Mert próbálkoztam vele de nem jött össze. Végső kétségbeesésem miatt fordulok hozzád :)
Így hoztam létre a formokat amikre egyenlőre szükségem van. De a submit és validate rész nem egészen világos. Mi alapján választja ki a saját submit és valid függvényét? Köszönöm a válaszodat.
T.
mindegyik form-hoz 3
mindegyik form-hoz 3 függvényed van:
1. a form generáló. Ennek a neve megegyezik a form_id-vel (konyvtar_add_form, konytar_torol_form)
2. a validáló függvényé, ha hiba van a form_set_error függvénnyel tudod jelezni. Ennek neve mint az előbbi, de _validate a vége. (konyvtar_add_form_validate($form_id,$form_values), konytar_torol_form_validate($form_id,$form_values))
3. a feldolgozást végző függvényé, mely validate helyett submit-ra végződik.(konyvtar_add_form_submit($form_id,$form_values), konytar_torol_form_submit($form_id,$form_values))
de ez már elég régóta a rendelkezésünkre áll(legalább is a 4.7-ben már volt)
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
de ez így n*3 függvényt jelent
Szia pp!
Korábban azt írtad, hogy az 5-ös Drupalnál elég 1*3 függvény. Eme hozzászólásod alapján viszont n*3 függvény kell. Akkor most hogy is van ez?
Böngésztem a drupal.org-ot, de csak a hook_forms()-ot találtam meg. Sehol sem találtam hook_forms_validate, illetve hook_forms_submit függvényekre utalást.
Üdv: Feri