Sziasztok,
Elvesztem a Form API-ban, segítséget kérek...
Van egy függvényem / legyen modulnev_tartalom() /, ami mindenféle kapott érték alapján ad vissza HTML tartalmat egy Drupal oldalnak. Ebben a függvényben kellene kiraknom egy formot a megkapott paraméterek alapján. Az egyes úrlap mezők nem egyben jelennének meg, hanem egy nagyobb táblázat több pontján szétszórtan, attól függően, hogy pl. szerkesztheti-e az adott tartalmat a user vagy sem. Az űrlapnak egyedi submit handlere is kell, hogy legyen.
Ezek alapján a következőt követtem el eddig:
- function modulnev_ujform() visszaadja az űrlapot
- function modulnev_ujform_submit($form_id, $form_value) { ... } kezelné le a submitot
- a fenti modulnev_tartalom() függvényben pedig ezeket használom:
$form = drupal_retrieve_form('modulnev_ujform', $form_state);
drupal_prepare_form('modulnev_ujform', $form, $form_state);
...
drupal_render($form['elemnev']) -el pedig kirakom az egyes elemeket
Minden szépen megjelenik, egyetlen bajom van: a submit handler nem hívódik meg. Az elnevezés rendben van, a Drupal For Firebugban látom, hogy berakja az adott nevű függvényt a #submit tömbbe - de nem hivódik meg mégsem.
A dolog dühítő oldala az, hogyha a formot a drupal_get_form() függvénnyel teszem ki, ami megjelenités szempontjából nem jó, mert egy helyen rakja ki az űrlap összes elemét - akkor MEGHIVJA a custom submit handlert!!
Ez alapján a kérdésem: hogy tudom elérni, hogy egy elemenként kirakott űrlapnak meghivódjon a custom submit handlere?
Előre is köszönöm mindenki segítségét!
eFeS
drupal_get_form() függvénnyel
drupal_get_form() függvénnyel rakd ki a formot, a megjelenését pedig olyanra sminkeled amilyenre akarod. Form API quick startot nézted?
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
De nem egyszerre akarom megjeleníteni a formom
A már kirakott űrlap variálása nem probléma, form_alter()-el szétszedtem meg összeraktam már jópár tartalomtipus admin formján lévő CCK-s tartalmat.
az itteni problémám ettől különböző. Valami olyasmit szeretnék, hogy fut egy ciklus 1-23-ig, minden futási ciklus egy-egy táblázat sort rak ki, és mondjuk bekerül a sorokba az 5., 12., 17. és 23. futási sorban egy-egy checkbox a legenerált form-ból.
A drupal_get_form() egy _egész_ űrlapot tesz ki. A From API quickstart is azt a módszert ajánlja, amit én használok, ha bonyolultabb markupba kell betenni a formot:
Ez eddig rendben van, az űrlap megjelenik, rendesen van felépítve - de nem hívódik meg a custom submit handlere. Ha _minden_ változatlanul marad, és csak annyit variálok, hogy drupal_get_form()-al rakom egyben az űrlapot a lap végére, nem pedig a elemenként a drupal_render()-el, akkor meghivja a submit handlert is, amit külön irtam hozzá. Ezt nem értem, hogy ez miért van...
---------------
Tátrai József
Drupler Kft.
http://www.drupler.hu
mit nem értesz?
mit nem értesz? :D
drupal_render a nevében is benne van, hogy lerajzolja amit megadsz neki. Ez nem a varázsceruza, hogy rajzolsz egy ajtót a falra rá egy kilincset és már működik is. :D
A drupal_get_form fogja a mechanizmust beindítani, meghívni többek között a submit handlert is. Ha csak úgy felfirkálgatod a drupal_renderrel a formelemeket nem fog működni a dolog.
a mintát amit idéztél ott az egy smink függvényben van benne.
Fontos, hogy ha van egy oldalad amiben a szöveg közé szeretnéd rakni a form elemeket, akkor ki kell fordítanod a gondolkodásodat és a form elemek köré kell raknod a szöveget a form smink függvényében hogy működjön a dolog.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Sok értelme nincs értetlenkednem...
...hiszen nem túlságosan bíztató hangvételű a segítség szövegezése sem. Nem varázsceruzát akartam használni.
Azt nem értettem, hogyha minden eleme megvan egy formnak objektum szinten, ugyanaz a $form['#submit'][] létrejön és be van állítva rendesen egyik és másik módon generálva a formot, akkor miért csak az egyik módon hajlandó lefutni az a rothadt submit függvény.
Szerintem ez nem annyira baromarcú kérdés, hogy "varázsceruzázni" kéne érte, még ha nevető fejjel is a végén. Annak, aki évek óta ebben él, fejlesztett már hozzá több raklapnyi cuccot, annak egyértelmű lehet sok minden. De ennél kevesebb Drupal-fejlesztői előélettel azért bőségesen lehet anonáliákat találni a rendszerben.
Az iránymutatást köszönöm, a gondolkodásom kifordítása Drupal módra fog következni.
Azért remélem, a Tanárúrkérem-eseket nem igy igazítod útba...
---------------
Tátrai József
Drupler Kft.
http://www.drupler.hu
megsértődni a legegyszerűbb
Nézd meg: drupal_get_form
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu