O Zend Frameworku je na internete toho popísaného veľa, nie ale všetko je zrozumiteľné hlavne pre človeka ktorý sa do toho chce dostať a nie všetkému rozumie. Jedna z takých vecí je napríklad View Helper. V podstate nutnosť pri práci so Zendom. Tento článok je laický návod na jeho použitie.
Zend Framework sa podľa mňa ťažko učí z oficiálnej príručky kde človek veľa veciam nerozumie a často potrebuje vedieť aj iné veci. Práve preto asi urobím niečo ako mini seriál laických návodov Zend Frameworku lebo keby existovalo niečo keď som sa to snažil naučiť je sám tak by som si ušetril kopec času. Uvidíme…
Čo je View Helper?
Vzhľadom na to, že je to framework typu MCV tak logika so vzhľadom je oddelená vec, view helper je niečo medzi tým. V podstate je to ako PHP funkcia ktorá mi niečo robí (počíta niečo alebo vráti kus HTML kódu) a vracia určité hodnoty alebo kusy kódov. Už z názvu View je používaná v pohľadoch ale dá sa použiť aj v controller, tu je to ale na zváženie lebo nie vždy je vhodné do logiky vkladať View helper ktorý mi môže narušiť tú logiku MCV frameworku. Ak teda sa už hráme, že oddeľujeme logiku od vzhľadu tak je najlepšie View helper v controlleroch používať rozumne alebo vôbec.
Kedy je to vhodné a vlastne na čo použiť View Helper?
View Helper je vhodný do miest kde určitý úkon vykonávam často prípadne existuje na každej podstránke. Tým ale nemyslím napríklad ľavý stĺpec, pravý stĺpec, pätičku alebo hlavičku. Na niečo takéto sa to síce použiť dá ale podľa mňa to nieje dobre, toto sa dá vytvoriť pomocou vlastností a možností layoutov. View helper sa pri klasickom webe hodí napríklad na generovanie odkazov na registráciu, prihlásenie, odhlásenie a výpis prihláseného užívateľa. I keď sa toto bude nachádzať na každej podstránke tak to aké odkazy sa zobrazia si vyžaduje určitý script na overenie či je užívateľ prihlásený alebo nie. Mohli by ste to dať do hlavičky kde to nejakým spôsobom overiť ale nieje to praktické. View helper to vyrieši a do pohľadu len vložíme jeden riadok kódu ktorý nám vráti čo potrebujeme.
Vytvárame View Helper
Vytvorenie View Helperu je jednoduché v podste si len vytvoríte jednu triedu s určitým názvom, tú uložíte na určité miesto vďaka tomu, že názov triedy a jej umiestnenie v adresároch umožní to, že View Helper použijete kdekoľvek bez toho aby bolo niekde treba niečo includovať.
View Helper zavoláte v bez nutnosti includovania, to vďaka názvu triedy ktorá odkazuje na jeho umiestnenie. Toto je veľmi pohodlné, View Helper môžete zavolať aj v controller triede ale to je na zváženie, nemiešajte logiku so vzhľadom.
Jednoduchý View Helper vyzerá napríklad takto:
<?php
class Zend_View_Helper_LoggedInUser
{
protected $_view;
function setView($view) {
$this->_view = $view;
}
function loggedInUser() {
$auth = Zend_Auth:getInstance();
if($auth-hasIdentity())
{
$logoutUrl = $this->_view->linkTo('auth/logout');
$user = $auth->getIdentity();
$username = $this->_view->escape(ucfirst($user->username));
$string = 'Logged in as ' . $username . ' | <a href="' . $logoutUrl . '">Logout</a>';
} else {
$loginUrl = $this->_view->linkTo('authentification/identify');
$string = '<a href="' . $loginUrl . '">Log In</a>';
}
return $string;
}
}
View Helper začína definíciou triedy, názov našej triedy je:
Zend_View_Helper_LoggedInUser
Prečo? Zend_View_Helper definuje umiestnenie View Helperu, ten môžeme uložiť do ľubovoľného PHP súboru… názov môže byť ľubovoľný. Avšak v adresári Views / Helpers / názov našeho View Helperu.
LoggedInUser je názov triedy, najideálnejšie je si ju nazvať tak ako budeme volať aj View Helper v pohľade.
Funkciu SetView neriešte vložte to do každého View Helperu. Ďalej nasleduje funkcia ktorá sa volá tak isto ako názov triedy a to je to kde si dáte vlastný kód ktorý niečo spraví a vráti. V našom prípade to bude overenie či je užívateľ prihlásený a ak áno tak vypíše jeho meno a zobrazí odkaz na odhlásenie. Podrobne jej kód vysvetľovať nebudem.
V jednom View Helper môžete vytvoriť aj viac funkcií kde jedna môže niečo vrátiť druhej, funguje to ako keď v jednej funkcii vložíte inú atď.
View Helper už máme, treba ho len zavolať
View Helper máme vytvorený, jeho názov je dobre vytvorený, je umiestnený v presnom adresári… teraz ho už len zavoláme na mieste kde potrebujeme. V pohľade to spravíme s kódom napríklad:
<?php echo $this->LoggedInUser(); ?>
V Controller to zavoláme trochu inak a to:
$this->view->LoggedInUser();
Toto je dúfam ľahko pochopiteľné použitie jednoduchého View Helperu…


