Tag Archives: zend_layout

Zend_Layout : using placeholders

Supposing that you’re familiar with Zend_Layout and why and where you should use it, here’s a little tutorial how to use placeholders.

If there’s a layout file called main.phtml where beside the part of:

<?php echo $this->layout()->content; ?>

there’s a need for a placeholder.

The placeholder is the place in your layout file, in this case in main.phtml, where you’d like to inject a part of your view script.

In a standard way you’ve some script file like index.phtml of the index controller. In Zend as you may know this is the default view of the default controller, and in that controller contains the simple code like this:

$this->_helper->layout()->title = 'browser title';

and than you can be sure this browser title can appear in the layout file with adding something really similar to the line above.

Just add this:

<title><?php echo $this->layout()->title; ?></title>

And now that’s enough to setup a variable in a Zend controller and to call that variable in the layout script.

Zend Framework – Disable Zend Layout

What’s Zend Layout

Everybody knows that sometimes you need header and footer for almost every page. In Zend Framework you don’t need to include them in every template page, as it will be if you were using Smarty for instance. You just need to use Zend_Layout. It’s easy and it’s helpful.

What if you don’t need layout for a controller action?

Well if you have to have a given controller action with no use of Zend_Layout, you just need to disable it.

How …

… simply by placing this line in you controller action:

$this->_helper->layout->disableLayout();

Zend_Layout

Или как да не пишем във всеки шаблон, че ще има header.

Всеки, който започва да използва нов web framework първоначално се запитва за няколко основни неща. Като цяло те и отговарят на MVC практиката.

  1. Как да направим така че всичките ни състояния в сайта да бъдат описани в различни файлове, така че да можем лесно да си намираме и поддържаме кода.
  2. Как да се погрижим за правата и ролите на различните потребители на сайта.
  3. Как да разделим html-а на няколко файла, за да не пишем по един милион пъти includes на header или footer.

Почти всеки, който се е сблъсквал с PHP програмиране е чувал за Smarty и когато някой, по-често псевдо разбирач, ти изреди една плеяда колко е ретроградно да се слага php код измежду html таговете и как трябвало Smarty да се притече на помощ, ето един добър довод за излагане против Smarty.

Хубаво е да се ползва Smarty. Няма проблем. Само че нека си представим следния пример. Имаме сайт с header – content – footer. Като обикновено header-a съдържа разни връзки към css и meta тагове. Със Smarty като искаме да използваме тая структура за 10 файла, 10 пъти ще имаме следния код:

{include file=”header.tpl”}

{include file=”content.tpl”}

{include file=”footer.tpl”}

и ако това се повтаря в 100 файла, ще се наложи, няма как – 100 пъти едно и също за тоя header и footer.

След като и Zend Framework се е измъчил в по-предишни версии, доколкото разбирам, все пак аз отскоро се захванах с него и направо започнах от 1.5.3, сега проблемът се решава от Zend_Layout. A и сблъсквайки се с проблема с header-a и footer-a стигнаь до четене на няколко урока, от които разбрах, че хората преди са се опитвали да решат проблема с plugin към Front Controller-а и явно това е било разпространената практика.

Може би и на създателите на ZF им е станало ясно, че така няма да стане и затова се е погрижил Zend_Layout.

Дори сега се появяват уроци които се стремят да помогнат на решаването на този проблем с помощта на plugin, но аз препоръчвам да не се захваща никой с тях, въпреки че може на някой да му е интересно. Най-добре да се насочи към използването на Zend_Layout. За жалост пък при него поне официалната документация ми се видя недостатъчно, но пък намерих една презентация от webinar на Zend.