symfony űrlapok részleges ellenőrzése
Mostanában megnéztem magamnak a Zend Frameworköt. A zf is biztosít egy saját űrlap készítési módozatot. Ami megfogott benne az az, hogy az űrlapokat részlegesen is lehet ellenőrizni, tehát csak a mezők egy részét adjuk át neki (Zend_Form::isValidPartial()).
Erre jelenleg symfonyban nincs lehetőség, pedig nagyon kényelmes és rugalmas megoldás tudna lenni. Egészen pontosan az embeded form megoldást valószínűleg ennek kezelésére találták ki (nem tudok másra gondolni), viszont könnyen lehet rá példát mondani, ahol ez a megoldás már inkább nyűg mint feature.
j. 16:37 on 2009. 01. 27. Permalink
Ez nagyon zsír, csak nem igazán értem, hogy hol használható, mert ugye egy Symfony űrlap egyáltalán nem űrlap hanem csak widget konténer, amit tetszőlegesen kombinálhatok, embedelhetek stb. Ha viszont egy űrlap FORM tag közé teszem és elpostolom akkor onnantól kezdve nekem az jó ha mindent levalidálok ami a FORM tagon belül van. Ezek szerinte a Zend tudja azt, hogy postolás után csak az első 3 widgetet (mezőt) validálja?
vagy nem értem és egészen máshol van a Nagy Szellemi Élmény a dologban?
Sulik Szabolcs 17:41 on 2009. 01. 27. Permalink
Pontosan.
Ha van egy rakat meződ egy userhez mondjuk, és az adatait több körben szeretnéd bekérni, akkor ha csak a mezők egy általad meghatározott részét adod át is működik (és jól működik) a dolog, nem kell a validator sémának az allow_extra_fields, filter_extra_fields opcióival játszani. Neked nem kell azzal sem foglalkoznod, hogy a mezők melyik részét határoztad meg, azt majd a bindPartial összeszedi.
Az embed form is jó lehet a fenti példában, viszont ha az alkalmazás másik öt helyén is kell adatot bekérni a usertől, és valszeg nem lesznek ezek a részhalmazok diszjunktak, akkor lőheted az embed formjaidat. Ez viszont szépen működ.
Emellett ez a megoldás csak a validálás idejére cseréli le a validátor sémát, utána visszaállítja az eredetit. Hátránya, hogy a pre és post validátorok nem működnek.
Hamarosan tovább is folytatódik a történet (van még néhány cikk a tarsolyomban
).
j. 18:27 on 2009. 01. 29. Permalink
Oké! Meggyőztél a példáddal!