Zend_Controller - Быстрый старт Введение Zend_Controller является ядром системы MVC в Zend Framework. Аббревиатура MVC - сокращение от Model-View-Controller (модель-вид-контроллер), это паттерн проектирования, предназначенный для отделения логики приложения от логики представления. Zend_Controller_Front реализует паттерн Front Controller, в котором все запросы перехватываются фронт-контроллером (front controller) и перенаправляются отдельным контроллерам действий (action controllers), выбор которых производится по запрошенному URL. Система Zend_Controller построена с расчетом на расширяемость как через наследование от уже существующих классов и написание новых классов, реализующих различные интерфейсы и абстрактные классы, образующих основу семейства классов контроллеров, так и через написание плагинов или помощников действий для наращивания функциональности системы или управления ею. Быстрый старт Если вам нужна более подробная информация, то сразу переходите к следующим разделам. Если хотите быстро начать работать с Zend_Controller, то читайте далее. Создайте файловую структуру Первый шаг состоит в том, чтобы создать файловую структуру приложения. Ниже приведено типовое решение: Установите корневую директорию для документов В своем веб-сервере установите директорию html из приведенной выше структуры в качестве корневой для веб-документов. Создайте свои правила перезаписи Отредактируйте файл html/.htaccess из приведенной выше структуры следующим образом: Узнайте больше о mod_rewrite Приведенные выше правила перезаписи позволяют получить доступ к любому файлу в корневой для веб-документов директории вашего виртуального хоста. Если в ней есть файлы, которые нужно скрыть от посторонних глаз, то вы наверное захотите установить более строгие правила. Перейдите на сайт Apache, чтобы узнать больше о mod_rewrite. Если у вас IIS 7.0, то используйте следующую конфигурацию перезаписи: ]]> Эти правила перезаписи пропускают запросы к существующим ресурсам (существующие символьные ссылки, непустые файлы и директории), все остальные запросы перенаправляются к фронт-контроллеру. Вышеприведенные правила перезаписи предназначены для веб-сервера Apache. За примерами правил перезаписи для других веб-серверов см. документацию по маршрутизаторам. Создайте файл загрузки Файл загрузки - это страница, на которую направляются все запросы, в нашем случае это html/index.php. Откройте html/index.php в любом текстовом редакторе и добавьте следующие строки: Этот код выполняет инстанцирование и запуск фронт-контроллера, который будет направлять запросы к контроллерам действий. Создайте свой контроллер действий, используемый по умолчанию До того, как начать обсуждение контроллеров действий, нужно сначала понять, как обрабатываются запросы в Zend Framework. По умолчанию первая часть пути в URL соответствует контроллеру, а вторая - действию. Например, дан URL http://framework.zend.com/roadmap/components. В нем путь /roadmap/components будет соответствовать контроллеру roadmap и действию components. Если не передано имя действия, то предполагается действие index; если не передано имя контроллера, то предполагается контроллер index (по соглашению Apache это соответствует DirectoryIndex). Диспетчер Zend_Controller-а принимает значение контроллера и находит соответствующий ему класс. По умолчанию это имя контроллера, начинающееся с заглавной буквы и со словом Controller в конце. Таким образом, контроллер roadmap будет соответствовать классу RoadmapController. Аналогичным образом устанавливается соответствие значения действия методу класса контроллера. По умолчанию значение приводится к нижнему регистру и к нему присоединяется слово Action. Таким образом, в нашем примере выше действие components будет методом с именем componentsAction, и в итоге вызов метода будет выглядеть следующим образом: RoadmapController::componentsAction(). Итак, двигаемся дальше. Теперь приступим к созданию контроллера и действия, используемых по умолчанию. Как было замечено ранее, эти контроллер и действие должны оба называться index. Откройте файл application/controllers/IndexController.php и введите следующее: По умолчанию включен помощник действий ViewRenderer. Это означает, что, просто определив метод действия и соответствующий скрипт вида, вы получите рендеринг контента. По умолчанию в MVC в качестве "вида" используется Zend_View. render() использует имя контроллера (например, index) и имя текущего действия (например, index) для определения того, какой шаблон тянуть. По умолчанию шаблоны имеют расширение .phtml, это значит, что в нашем примере будет использоваться шаблон index/index.phtml. Кроме этого, ViewRenderer автоматически предполагает, что директория views, находящаяся на том же уровне, что и директория контроллера, будет базовой директорией видов, и что действующие скрипты вида будут в поддиректории views/scripts/. Таким образом, шаблон для рендеринга будет находится в application/views/scripts/index/index.phtml. Создайте скрипт вида Как было упомянуто в предыдущем разделе, скрипты вида находятся в application/views/scripts/. Скриптом вида для контроллера и действия, используемых по умолчанию, является application/views/scripts/index/index.phtml. Создайте этот файл и добавьте в него какой-либо HTML-код: My first Zend Framework App

Hello, World!

]]>
Создайте контроллер ошибок По умолчанию зарегистрирован плагин-обработчик ошибок. Этот плагин ожидает, что есть контроллер для обработки ошибок. По умолчанию он предполагает, что в модуле, используемом по умолчанию, имеется контроллер ErrorController с методом errorAction. Согласно уже обсуждаемой выше структуре директорий этот файл будет находиться по пути application/controllers/ErrorController.php. Нужно также создать скрипт вида application/views/scripts/error/error.phtml, пример его содержимого: Error

An error occurred

An error occurred; please try again later.

]]>
Смотрим сайт! Теперь, имея свои первые контроллер и вид, вы можете запустить свой броузер и просматривать сайт. Если ваш домен - example.com, то любой из следующих URL-ов будет возвращать ту страницу, которую вы только что создали: http://example.com/ http://example.com/index http://example.com/index/index Теперь вы можете приступить к созданию других контроллеров и методы действий. Поздравляем!