В контроллере вы создаете и конфигурируете экземпляр
Zend_View
. Затем вы объявляете переменные для этого
экземпляра и приказываете ему сгенерировать выходные данные, используя
указанный скрипт.
Ваш скрипт контроллера должен объявить необходимые переменные до того, как будет передано управление скрипту вида. Обычно вы можете делать объявления по одному через объявление свойств экземпляра вида.
<?php $view = new Zend_View(); $view->a = "Hay"; $view->b = "Bee"; $view->c = "Sea";
Однако это может оказаться утомительным, если вы уже имеете набор значений для присвоения в массиве или объекте.
Методы assign()
дают возможность присваивать значения
из массива или объекта "партиями". Следующий пример делает
то же самое, что и предыдущий с последовательным объявлением
свойств.
<?php $view = new Zend_View(); // определение массива из пар ключ-значение, где // ключ является именем переменной, // а значение - значением объявляемой переменной $array = array( 'a' => "Hay", 'b' => "Bee", 'c' => "Sea", ); $view->assign($array); // делаем то же самое с открытыми свойствами объекта; // обратите внимание, что при объявлении мы приводим объект к массиву $obj = new StdClass; $obj->a = "Hay"; $obj->b = "Bee"; $obj->c = "Sea"; $view->assign((array) $obj);
Вы можете также использовать методы для последовательного объявления c передачей имени переменной и ее значения.
<?php $view = new Zend_View(); $view->assign('a', "Hay"); $view->assign('b', "Bee"); $view->assign('c', "Sea");
После того, как вы определили все необходимые переменные, контроллер
должен дать Zend_View
команду выполнить указанный
скрипт вида. Делайте это посредством вызова метода
render()
. Обратите внимание, что этот метод будет
возвращать результат рендеринга, но не выводить его,
поэтому вам нужно самостоятельно вывести его посредством
echo
или print
, когда нужно.
<?php $view = new Zend_View(); $view->a = "Hay"; $view->b = "Bee"; $view->c = "Sea"; echo $view->render('someView.php');
По умолчанию Zend_View
ищет скрипты
вида относительно вызывающего скрипта.
Например, если скрипт контроллера находится в
/path/to/app/controllers
и он вызывает
$view->render('someView.php')
, то
Zend_View
будет искать
/path/to/app/controllers/someView.php
.
Очевидно, ваши скрипты вида могут находиться в другом месте.
Чтобы указать Zend_View
, где искать скрипты вида,
используйте метод setScriptPath()
.
<?php $view = new Zend_View(); $view->setScriptPath('/path/to/app/views');
Теперь, когда вы вызываете $view->render('someView.php')
,
он будет искать /path/to/app/views/someView.php
.
Фактически вы можете "складывать" в стек пути,
используя метод addScriptPath()
. Если вы добавили
пути в стек, то Zend_View
будет искать запрошенный
скрипт вида в этих путях, начиная с пути, добавленного последним.
Это дает возможность замещать скрипты видов, принятые по умолчанию,
другими, это позволяет создавать специальные "темы" и "скины" для всех или только определенных видов.
<?php $view = new Zend_View(); $view->addScriptPath('/path/to/app/views'); $view->addScriptPath('/path/to/custom/'); // теперь, когда вы вызываете $view->render('booklist.php'), Zend_View // будет искать "/path/to/custom/booklist.php", // затем "/path/to/app/views/booklist.php", // и под конец "booklist.php" в текущем каталоге.