Engem mindig fusztrált, hogy egy csomó sort ( najó nem sok de 4-5 megvan ) kell írni ahoz, hogy ellenrizzem, volt e post -al küldve adat és hogy a form értékeit ellenörizzem.
Ha egy formot akarok létrehozni, akkor mindig egy saját osztályt példányosítok, ami részben így néz ki ( még pár plussz dolgot beletettem, pl ckeditor betöltése és hozzárendelése egy textarea-hoz, tudom csinálhattam volna új form elementet, de nekem így tetszik )
abstract class Kubi_Form extends Zend_Form { public function isPosted( ) { $fc = Zend_Controller_Front::getInstance(); if($fc->getRequest()->isPost()) { if( $this->isValid( $_POST ) ) { return true; } } return false; } } // így máris egyszerűbb a használata $form = new Kubi_Form_User_Core(); if( $form->isPosted() ) { if( $form->userSave() ) { $form = 'Mentve.'; } } $this->view->content = $form;
Ha formot kell csinálni, mindig külön osztályt hozok létre, mint fentebb látható, és az adatok mentése ( betöltése , frissítése ) adatbázisba mindig a form egyik eljárása végzi, így egy helyen tartom a kódot, újra felhasználható.
Felhasználó regisztrációnál pl. két jelszó mezőt kell megadni, nem ismerek jelenleg olyan zend validatort amivel a két mező azonossága ellenörizhető, a userSave() eljárásban ezt megtudom tenni, hiba esetén a addError() és markAsError() eljárásokkal a megfelelő mezőhöz hozzáadható a hiba és ha a userSave() visszatérési értéke false, akkor a form újra megjelenik.
Ugyanezt a formot használom a felhasználó létrehozására, és a felhasználó adatainak módosítására is. Utóbbi esetben a szükségtelen részeket törlöm illetve ha kell újakat beillesztek a userLoad( Doctrine_Record $user ) részben.
A létrehzásnál és a módosításnál mért jó ugyanazt a formot használni? Nem kell újra megadni a zend validatorokat, filtereket, decoratorokat stb. és tuti egyeznek a beállításaik (pl jelszónál minimum maximum karakter szám )