abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 13:33 | Nová verze

    Mastodon (Wikipedie) - sociální síť, která není na prodej - byl vydán ve verzi 4.6. Přehled novinek s náhledy v oznámení na blogu.

    Ladislav Hagara | Komentářů: 0
    dnes 12:44 | IT novinky

    V Edici CZ.NIC, knižní řady správce české národní domény, vychází nová kniha Martina Malého Kódy, buildy, firmwary. Autor po půl roce od vydání předchozího titulu přichází se svou již sedmou knihou, tentokrát zaměřenou na vývoj programového vybavení pro embedded zařízení. Publikace s podtitulem Základy vývojářského řemesla pro tvůrce hobby elektroniky nabízí praktického průvodce pro všechny, kdo své projekty vytvořené s Arduinem

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 11:44 | Komunita

    V Brně na FIT VUT probíhá dvoudenní open source komunitní konference DevConf.CZ 2026. Na programu je celá řada zajímavých přednášek, lightning talků, meetupů a workshopů. Přednášky lze sledovat i online na YouTube kanálu konference. Aktuální dění lze sledovat na Matrixu, 𝕏 nebo Mastodonu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána nová verze 15.1 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 19:11 | Zajímavý projekt

    Vývojáři Ubuntu představili projekt Myna, tj. iniciativu zaměřenou na přidání funkce převodu řeči na text do prostředí desktopu Ubuntu. Dle plánu již v Ubuntu 26.10.

    Ladislav Hagara | Komentářů: 2
    včera 18:33 | Zajímavý software

    Společnost Epic Games představila nový open source systém pro správu verzí Lore navržený pro "bezprecedentní škálovatelnost dat i týmů a optimalizovaný pro projekty, včetně her a zábavy, které kombinují kód s velkými binárními soubory, aby uspokojil potřeby vývojářů i umělců". Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 0
    včera 15:33 | IT novinky

    Úřad pro ochranu hospodářské soutěže (ÚOHS) provedl v říjnu 2024 místní šetření u společnosti Seznam.cz. Úřad prověřoval důvodné podezření na možné protisoutěžní jednání, konkrétně zneužití dominantního postavení. Krajský soud v Brně v květnu 2025 konstatoval, že toto šetření bylo nezákonné. Nejvyšší správní soud (NSS) včera rozhodl, že šetření bylo provedeno v souladu se zákonem. Krajský soud bude muset případ posoudit znovu.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | IT novinky

    Byl představen skládací telefon Commodore Callback 8020. Ani hloupý, ani chytrý. Pro fanoušky Commodore a digitálního minimalismu. Bez webového prohlížeče a sociálních sítí. S předinstalovaným WhatsAppem. S operačním systémem Sailfish OS.

    Ladislav Hagara | Komentářů: 5
    včera 08:22 | Bezpečnostní upozornění

    V OpenBSD byla objevena 27 let stará chyba v ppp pomocí níž lze vzdáleně obejít autentifikaci. Chyba byla nahlášena 12.6. a 14.6. byla opravena. Bližší info v článku A 27-Year-Old Authentication Bypass in OpenBSD's PPP Stack.

    Max | Komentářů: 6
    včera 05:22 | Zajímavý článek

    Odpověď Evropské komise (pdf) k evropské občanské iniciativě Stop Destroying Videogames, jež je součástí hnutí Stop Killing Games: "Komise se domnívá, že v této fázi nemůže navrhnout právní povinnost zachovat hratelnost videoher poté, co přestaly být poskytovány komerčně. Důvodem jsou i stávající práva duševního vlastnictví. Podle autorského práva EU mají nositelé práv výlučná práva ke svým výtvorům. Kromě autorských práv mohou být

    … více »
    Ladislav Hagara | Komentářů: 20
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (16%)
     (31%)
     (3%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1933 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Zend framework III

    6.4.2008 21:29 | Přečteno: 2671× | Výběrový blog

    Zend framework - view

    Minule jsem se pokusil ve stručnosti popsat fungování kontrolerů v Zendu, zejména pak front controller, o action controllerech (potomcích Zend_Controller_Action) jsem se zmínil ještě stručněji. Dnes bych rád, opět jen povrchně, popsal, jak se od kontroleru dostat až k html stránce, která se posílá uživateli do prohlížeče (nebo přesněji řečeno prezentační vrstvě, tedy view v onom MVC, což nemusí být jen html stránka).

    Prezentační vrstva je v Zendu reprezentované především třídou Zend_View. Až dosud jsem k vytvoření view používal action controller, který na konci každé akce vygeneroval příslušné view automaticky. Každý action contoller má totiž přiřazenou pomocnou třídu (hepler class) ViewRenderer, která, pokud není stanoveno jinak, se postará o vygenerování view, které očekává skript action.phtml v adresáři application/views/scripts/contoller/. Pokud chceme zavolat jiný skript, můžeme metodu render() zavolat explicitně se jménem skriptu, který se má rendrovat. Pokud chceme zabránit defautlnímu volání ViewRenderer (např. akce nevytváří přímo žádný výstup pro view nebo výstup ukládáme přímo do objektu respose), můžeme to explicitně zakázat v příslušné akci voláním $this->_helper->viewRenderer->setNoRender(true);.

    Vytvoření view probíhá ve třech krocích: vytvoření instance Zend_View, přiřazení proměnných vytvořené instanci a vykreslení (renderovaní). Vše obvykle probíhá v kontroleru nebo nějakém jeho pluginu. Instanci Zend_View můžeme buď vytvořit jako instanci každé jiné třídy ($view = new Zend_View();), v action controllerch pak můžeme využít metodu k tomu určenou, initView(). Pokud inicializace neproběhla před voláním metody render(), provede ji tato metoda. Obě tyto metody přiřadí atributu kontroleru view instanci třídy Zend_View, můžeme ale použít i nějakou jinou třídu, která implementuje Zend_View_Interface. Metoda render(),jak již bylo řečeno, se stará o vytvoření výstupu. Můžeme ji volat s následujícími parametry: render(string $action = null, string $name = null, bool $noController = false). Parametr action určuje jméno skriptu, který se má vykreslit a který musí být v adresáři views/scripts/controller_name. Pokud by se skript nacházel v jiném adresáři, je potřeba nastavit parametr $noController na hodnotu true (nastavení cesty ke view skriptům se provádí pomocí $view->setScriptPath();, případně $view->addScriptPath();). Výstup je uložen do objektu Zend_Controller_Response. Jednotlivé části výstupu mohou být pojmenované, k čemuž slouží parametr name metody render() (pojmenované bloky můžeme ukládat i přímo do objektu response pomocí metod prepend($name, $content) a append($name, $content)). Pokud vytváříme instanci Zend_View mimo action controller, musíme jí nastaví cestu v view skriptům($view->setBasePath()). Tato situace například nastává, když vytváříme view v pluginu. Jednoduchý příklad použití: hlavička a patička stránky jsou obvykle pro všechny stránky stejné, tak abychom je nemuseli pokaždé nastavovat, můžeme si vytvořit plugin front controlleru, který se zavolá při každém požadavku a bude hlavičku a patičku nastavovat:

    class ZendTest_View_HeadfootPlugin extends Zend_Controller_Plugin_Abstract
    {
    
    	public function preDispatch(Zend_Controller_Request_Abstract $request)
    	{
    		$view = new Zend_View();
    		$config = Zend_Registry::getInstance()->get('config');
    		$view->setBasePath($config->myview->viewpath);
    		$this->getResponse()->prepend('header', $view->render('header.phtml'));
    	}
    
    	public function postDispatch(Zend_Controller_Request_Abstract $request)
    	{
    		$view = new Zend_View();
    		$config = Zend_Registry::getInstance()->get('config');
    		$view->setBasePath($config->myview->viewpath);
    		$this->getResponse()->append('footer', $view->render('footer.phtml'));
    	}
    }
    

    Velmi užitečnou metodou třídy Zend_View je metoda $view->escape($variable), která nahradí příslušné znaky escape sekvencí (co se má escapovat můžeme měnit pomocí metody setEscape()). Kapitolka v manuálu, která stojí za nahlédnutí, ale je zbytečné ji sem opisovat, je View Helpers (Partial Helper, Head helpery, Translate Helper a další).

    K rozvržení jednotlivých prvků v prezentační vrstvě slouží Zend_Layout. Slouží v podstatě jako šablona, podle které se skládají jednotlivé části (view popisovaná v předchozím odstavci) do výsledného dokumentu. Pěkný příklad použití Zend_Layout uvedl Karel Benák v diskuzi pod prvním zápiskem o Zendu. Je zbytečné jej sem opisovat, takže se jej pokusím jen trochu okomentovat a doplnit, co mi tam na první pohled, jako člověku Zendu neznalého, nebylo zcela jasné. Řádek $layout = Zend_Layout::startMvc(); vytvoří instanci Zend_Layout a zaregistruje ji ve front contorlleru, který po ukončení dispatch smyčky vygeneruje konečnou podobu prezentační vrstvy aplikace. $layout->setConfig($config); načte konfiguraci layoutu. Typicky nastavujeme hlavně cestu k layoutu. Zkráceně můžeme použít $layout = Zend_Layout::startMvc($config->testlayout); (zde je navíc v XML konfiguračním souboru přidán obalujicí element testlayout). Parametrem metody setConfig je objekt Zend_Config. Obvykle jeho instanci vytvoříme v souboru bootstrap.php, kde jej rovnež uložíme v registru (kontejner sloužící uchovávání objektů a hodnot, které mají být dostupné v celé aplikaci):

    $config = new Zend_Config_Xml('../../zendTest/config.xml', 'production');
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
    
    Zbytek příkladu mi příjde vcelku jasný a asi nepotřebuje další komentář.

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    7.4.2008 00:07 Karel Benák | skóre: 8 | blog: benyho
    Rozbalit Rozbalit vše Re: Zend framework III
    Vypadá to jako docela pěkný seriálek. Co se Zend Frameworku týče, jsem v něm začátečník, ale Zend_Layout a Zend_Config_Xml jsou super věc. Až se např. dostaneš k Zend_Form, zjistíš, že si celý formulář můžeš nadefinovat právě v konfiguračním souboru a není třeba jej složitě programovat :-) Každopádně se těším na další zápisky, vyděržaj pijaněr!

    PS: Ve vysvětlovacím komentáři jsem měl chybku, místo $this->layout()->code mělo být $this->layout()->content.
    Láska je jako prd, když hodně tlačiš tak z toho bude ...
    Daniel Kvasnička ml. avatar 7.4.2008 13:39 Daniel Kvasnička ml. | skóre: 52 | blog: The Joys and Sorrows of Being an IT Freak | Ostrava
    Rozbalit Rozbalit vše Re: Zend framework III
    Až se např. dostaneš k Zend_Form, zjistíš, že si celý formulář můžeš nadefinovat právě v konfiguračním souboru a není třeba jej složitě programovat :-)
    Me osobne presne tohle vadi. Nemam rad generovani markupu v PHP a pak jen nekde <?= $this->form ?> a to proto, ze se to pak vsechno rozjizdi a v ramci view nemam kontrolu nad stylovanim a vlastnim pojetim markupu -- nemluve o praci v tymu programator-koder.
    FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."
    7.4.2008 06:36 Martin Hujer | skóre: 4
    Rozbalit Rozbalit vše Re: Zend framework III
    Ahoj, jsem rád, že někdo další píše o ZF..

    Bebylo by jednoduší hlavičku a patičku vypisovat jen v layoutu, pomocí render('header.phtml') ?> a render('footer.phtml') ?> ;-)
    7.4.2008 08:53 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Zend framework III
    To by asi jednodussi bylo:-) (Chtel jsem vymyslet nejaky prilad, kde se vytvari Zend_View mimo action contoller a vystup se primo zapise do Response. No, asi to nebyl uplne nejlepsi priklad:-)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.