42.2. Скрипты контроллеров

В контроллере вы создаете и конфигурируете экземпляр Zend_View. Затем вы объявляете переменные для этого экземпляра и приказываете ему сгенерировать выходные данные, используя указанный скрипт.

42.2.1. Объявление переменных

Ваш скрипт контроллера должен объявить необходимые переменные до того, как будет передано управление скрипту вида. Обычно вы можете делать объявления по одному через объявление свойств экземпляра вида.

<?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");
        

42.2.2. Выполнение скрипта вида

После того, как вы определили все необходимые переменные, контроллер должен дать Zend_View команду выполнить указанный скрипт вида. Делайте это посредством вызова метода render(). Обратите внимание, что этот метод будет возвращать результат рендеринга, но не выводить его, поэтому вам нужно самостоятельно вывести его посредством echo или print, когда нужно.

<?php
$view = new Zend_View();
$view->a = "Hay";
$view->b = "Bee";
$view->c = "Sea";
echo $view->render('someView.php');
        

42.2.3. Пути к скриптам видов

По умолчанию 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" в текущем каталоге.
        
    Поддержать сайт на родительском проекте КГБ