Nyomtatvány rekord létrehozásához és szerkesztéséhez
Hogyan lehet megfelelően megvalósítani egy rekord hozzáadását és szerkesztését a Nette-ben, ugyanazt az űrlapot használva mindkettőhöz?
Sok esetben a rekord hozzáadására és szerkesztésére szolgáló űrlapok azonosak, csak a gomb címkéje különbözik. Példákat mutatunk egyszerű bemutatókra, ahol az űrlapot először egy rekord felvételére, majd szerkesztésére használjuk, végül pedig a két megoldást kombináljuk.
Rekord hozzáadása
Egy példa egy rekord hozzáadására használt prezenterre. A tényleges adatbázis-munkát a Facade
osztályra
hagyjuk, amelynek kódja a példa szempontjából nem releváns.
Felvétel szerkesztése
Most nézzük meg, hogyan nézne ki egy rekord szerkesztésére használt prezenter:
Az action metódusban, amelyet a prezenter életciklusának kezdetén hívunk meg, ellenőrizzük a rekord létezését és a felhasználó engedélyét a szerkesztésre.
A rekordot a $record
tulajdonságban tároljuk, hogy a createComponentRecordForm()
metódusban az
alapértelmezések beállításához, valamint a recordFormSucceeded()
azonosítóhoz rendelkezésre álljon. Egy
alternatív megoldás az lenne, ha az alapértelmezett értékeket közvetlenül a actionEdit()
-ban állítanánk
be, és az ID értékét, amely az URL része, a getParameter('id')
segítségével kérnénk le:
Azonban, és ez lesz a legfontosabb tanulság az egész kódból, meg kell győződnünk arról, hogy a művelet
valóban edit
, amikor létrehozzuk az űrlapot. Mert különben a actionEdit()
metódusban az
érvényesítés egyáltalán nem történne meg!
Ugyanaz az űrlap a hozzáadáshoz és a szerkesztéshez
És most egyesítjük a két előadót egybe. Vagy megkülönböztetjük, hogy melyik műveletről van szó a
createComponentRecordForm()
módszerben, és ennek megfelelően konfiguráljuk az űrlapot, vagy közvetlenül az
action-módszerekre bízzuk, és megszabadulunk a feltételtől: