Zend Framework

Nemrég kezdtem el használni a ZF-et, és mivel szeretem összeírni mit hogyan oldok meg, létrehoztam ezt a fórumot.

A helyesírásomat ne fikázd, tudom hogy szörnyü, ez van sajnos, hiába olvasok 12 éves korom óta baromi sok sci-fit, az írásom nem javul.

Lelkes weblap fejlesztő vagyok, nem értek a dizájnhoz, elboldogulok vele, de nem az én asztalom, a programozást viszont egyenesen imádom.

Remélem már nem tartozom a szakmában a pistikék közé, de még profinak sem nevezném magam, lelkes haladó osztályt választom :)

Ha valamire kíváncsi vagy, segítség kell php jacascript html css témakörben ( ne kérj tőlem olyat hogy ezt csináld meg nekem pls ) csak kérdezz bátran. Értelmes vitákba is szívesen bonyolódom, tágítsuk nézeteinket.

Címkék

code (1) doctrine (2) etc (2) module (1) security (1) users (1) zf (4) Címkefelhő

Friss topikok

Zend Form kibővítése

2010.03.20. 00:16 Mokacuka

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 )

2 komment

A bejegyzés trackback címe:

https://zend-framework.blog.hu/api/trackback/id/tr861853679

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

vbali 2010.04.23. 12:36:32

Egy apró kis logikai hibát véltem felfedezni az isPosted() metódusban. Az isPosted() akkor is FALSE értékkel tér vissza ha a form nem valid. Így viszont csalóka a metódus elnevezése, mert ha azt kérdezem, hogy isPosted? és azt válaszolja, hogy FALSE akkor nem tudom eldönteni, hogy a validáláson bukott-e el vagy egyszerűen csak nem volt POST-olás, amit sok esetben fontos tudnom (például, hogy feltöltsem-e default értékekkel a form-ot).

Még egy apróság, két if-et használsz, ami szerintem fölösleges és bonyolítja a kód olvashatóságát (bár ez szubjektív):

if ($fc->getRequest()->isPost() && $this->isValid($_POST)) {
}

Mokacuka 2010.04.23. 14:08:36

szokásom 2 if -et használni ilyen esetben, mindössze csak azért, mert zend stúdióban a & jelre az svn commit ablak jön elő és még nem volt kedvem kibogarászni hogy hol kell kikapcsolni :)

Az isPosted csalóka elnevezés, erre már én is gondoltam, csak nem tudtam jobb elnevezést kitalálni, még mindig nem tudok.... Ha van ötleted, átírom arra :)

A default értékkel való feltöltés nem probléma, az isPosted előtt kell feltölteni a def értékeket és az isPosted-en belüli isValid felülirja a form értékeit ha a POST megtörtént. Ez dupla értékadás post esetén, de nem ez lesz a scriptben a szűk kereszmetszet :) Esetek 90%-ban megfelel ez a megoldás.

Engem az zavar, hogy egy bonyolultabb form elkészítése sok időt vesz igénybe, kellene hozzá egy grafikus megoldás... megadom hogy ilyen meg olyan mezők legyenek, ilyen meg olyan validator, filter stb, és az összes config beállítás megadható mint pl delphiben egy text mező vagy button esetében.... Asszem csinálok valami ilyesmit.
süti beállítások módosítása