Nette Templates pro Zend 3

Netťácké šablony jsem si hned oblíbil a používal je nejen s kompletním frameworkem. Zend Framework umožňuje vcelku nahradit výchozí “šablonovací” systém jiným a vzhledem k existujícím projektům, které spravuji a kde by se mi Nette šablony hodily, jsem vytvořil vcelku jednoduchou přemosťující třídu, která umožňuje použít Nette Templates v Zend Frameworku.

Stažení

Třídy včetně příkladu implementace lze najít v repozitáři na Githubu.

Použití

Do aplikace si stačí nahrát Nette Framework (celý) a dvě třídy (jedna pro samotnou implementaci šablon, druhá pro doplnění maker, které nebudou v původní formě fungovat). Pak už je jen potřeba nahradit původní Zend_View šablonami z Nette.

V repozitáři to nemám úplně pěkně uděláne. Narozdíl od Nette, kde bych na to použil společný presenter, je v Zendu lepší vyčlenit inicializaci do Controller pluginu. Každopádně až na umístění pár drobností bude implementace vypadat stejně jako příklad v repozitáři.

Layouty

Systém nebude fungovat s Layoutovými třídami ze ZF. Je potřeba je vypnout a layout si vytvořit sami přes bloky a makro {extends}. V šabloně pohledu bude tedy např.:

{extends '../../../layouts/scripts/layout.phtml'}
{block content}
obsah ....

a layout budu mít definovaný takto:

<html>
	<head>
		<title>
			Nette View in Zend Test
		</title>
	</head>
	<body>
		{include #content}
	</body>
</html>

Funkčnost maker

V současné implementaci mám pouze základní podporu pro makro {link}, zápis odkazu se ale spíš blíží použití klasického URL helperu ze Zend_View. Chtělo by to ještě dodělat podporu pro {ifCurrent}

{control} přirozeně nefunguje.

3 komentářů

  1. Ladislav Prskavec řekl 14.2.2011 12:28

    Vidis nejakou moznost rozchodit podporu pro layout v Zendu, to je proc ja jsem vicemene nepresel na jiny sablonovaci system, protoze mi Zend_Layout vyhovuje a chtel bych ho mit i pri pouziti jineho sablonovaciho systemu.

  2. Vojtěch Vondra řekl 14.2.2011 12:34

    Pokud se zapne Zend_Layout, tak se Zend pokusi vyrenderovat zvlast obe sablony a jediny problem je, jak ziskat obsah te obsahove a vypsat ho v layoutu. $this->layout()->content v layoutu přirozeně nefunguje. Jediné co by snad bylo potřeba udělat je zprovoznit přístup k obsahu, co byl původně v Zend_View v $this->layout(). Když budu mít čas, zkusim to nějak rozchodit.

  3. Lucass řekl 10.3.2011 7:37

    Zdravím,

    pokoušel jsem se o implementaci Nette Templates do Zendu před časem, nakonec jsem zvolil šablonovací systém Twig. Stejně jako Nette umožňuje dědičnost a bloky, syntax je velice podobná. Pro začlenění do Zendu jsem využil knihovnu Zwig, viz http://code.google.com/p/zwig/.

Máte k článku co říct?