Sziasztok!
Egy kis segítséget szeretnék kérni. Egy olyan modult készítek, amely verseny-események kiírását, módosítását teszi lehetővé. A hook_menu alkalmazásával 3 menüt hoztam létre: new, list, edit. A new és a list szépen működik, és a form-ba beírt adatokat adatbázisba mentem, ill listázom.
Viszont az edit esetében nem jutok dűlőre.
A menü item-et így hozom létre
'title' => 'Event edit', 'page callback' => 'drupal_get_form', );
Azt kiderítettem, hogy a wildcard (%test_event) értékének megszerzéséhez test_event_load($id) függvényt kell készítenem, viszont amit nem tudok, hogy a form-nak hogyan tudom átadni az értéket, mert ott a mezők default értékeinek be kell állítanom az aktuális id-hez tartozókat.
Esetleg teljesen rosszul közelítem meg? :S Sajnos eléggé elbizonytalanodtam.
Ha valaki egy pársorban segítene, nagyon hálás lennék!
(drupal.org-on keresgéltem, de nem jöttem rá sajnos)
Köszönöm előre is!
Eddig nem rossz, amit
Eddig nem rossz, amit csináltál. A formnak nem kell feltétlenül hook_menuben odaadni az értéket, bőven ráérsz a form képzésekor. Ha szépen megírtad a loadered, akkor menu_get_object('test_event')-el tudod bárhonnan elérni. Hogy szépen tudj (és más modul is tudjon) vele játszani, érdemes $form_state['test_event']-ben eltárolni a betöltött értéket a form függvényedben. Egyébként nézz szét a node.pages.inc fáljban a node modulban, sok okosság van benne.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
Köszönöm!
A menu_get_object('test_event') -el szépen visszakapom a %test_event -et. :)
Megnézegettem a node.pages.inc -et és a node.module -t is, viszont sajnos még nem világos, hogy milyen műveletet (vagy ellenőrzést) kellene végrehajtanom a test_event_load fv-ben.
Most így működik:
Ezt követően a form default értékeinek visszaadására egy külön fv-t írtam, melynek paramétere: menu_get_object('test_event')
és ez a fv. visszaadja a db-ből a megfelelő default értéket a form adott mezőjének.
Ezzel kapcsolatban kérdésem, hogy a test_event_load fv. művelete megfelelő, elegendő?
Valamint az egész leírt megvalósítás elfogadható megoldásnak tűnik?
Továbbá, hogy megtehetem-e azt, hogy azonos form-ot alkalmazok a new-ra és az edit-re?
Hálás köszönet! :)
Egy kis javítás :)
Rájöttem, hogy ez azért nem elégséges, mert a rendszer így nem tudja, hogy valóban létezik-e ahhoz az X/edit oldalhoz tartozó rekord az adatbázisban. Ezért a test_event_load fv-ben ezt vizsgálni kell. Ezt egy külön (más célra is alkalmazott fv-ben már vizsgálom, amit itt is meghívok), így azokon az oldalakon amelyekhez nem tartozik rekord a db-ben "Page not found" látszik.