Programmer's Reference Guide
| Zend_Controller |
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, то читайте далее.
Создайте файловую структуру
Первый шаг состоит в том, чтобы создать файловую структуру приложения. Ниже приведено типовое решение:
application/
controllers/
IndexController.php
models/
views/
scripts/
index/
index.phtml
helpers/
filters/
html/
.htaccess
index.php
Установите корневую директорию для документов
В своем веб-сервере установите директорию html из
приведенной выше структуры в качестве корневой для
веб-документов.
Создайте свои правила перезаписи
Отредактируйте файл html/.htaccess из
приведенной выше структуры следующим образом:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Если у вас IIS 7.0, то используйте следующую конфигурацию перезаписи:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^.*$" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}"
matchType="IsFile" pattern=""
ignoreCase="false" />
<add input="{REQUEST_FILENAME}"
matchType="IsDirectory"
pattern="" ignoreCase="false" />
</conditions>
<action type="None" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^.*$" />
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Эти правила перезаписи пропускают запросы к существующим ресурсам (существующие символьные ссылки, непустые файлы и директории), все остальные запросы перенаправляются к фронт-контроллеру.
Замечание: Вышеприведенные правила перезаписи предназначены для веб-сервера Apache. За примерами правил перезаписи для других веб-серверов см. документацию по маршрутизаторам.
Создайте файл загрузки
Файл загрузки - это страница, на которую направляются все
запросы, в нашем случае это html/index.php.
Откройте html/index.php в любом текстовом редакторе
и добавьте следующие строки:
Zend_Controller_Front::run('/path/to/app/controllers');
Этот код выполняет инстанцирование и запуск фронт-контроллера, который будет направлять запросы к контроллерам действий.
Создайте свой контроллер действий, используемый по умолчанию
До того, как начать обсуждение контроллеров действий, нужно
сначала понять, как обрабатываются запросы в 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 и
введите следующее:
/** Zend_Controller_Action */
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
}
}
По умолчанию включен помощник действий 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-код:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My first Zend Framework App</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
Создайте контроллер ошибок
По умолчанию зарегистрирован плагин-обработчик
ошибок. Этот плагин ожидает, что есть контроллер для
обработки ошибок. По умолчанию он предполагает, что в модуле,
используемом по умолчанию, имеется контроллер
ErrorController с методом errorAction.
class ErrorController extends Zend_Controller_Action
{
public function errorAction()
{
}
}
Согласно уже обсуждаемой выше структуре директорий этот файл
будет находиться по пути
application/controllers/ErrorController.php. Нужно
также создать скрипт вида
application/views/scripts/error/error.phtml, пример
его содержимого:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Error</title>
</head>
<body>
<h1>An error occurred</h1>
<p>An error occurred; please try again later.</p>
</body>
</html>
Смотрим сайт!
Теперь, имея свои первые контроллер и вид, вы можете
запустить свой броузер и просматривать сайт. Если ваш домен -
example.com, то любой из следующих URL-ов будет
возвращать ту страницу, которую вы только что создали:
http://example.com/http://example.com/indexhttp://example.com/index/index
Теперь вы можете приступить к созданию других контроллеров и методы действий. Поздравляем!
| Zend_Controller |
Select a Version
Languages Available
Components
Search the Manual
Navigation
- Руководство разработчика
- Руководство разработчика
- Zend_Controller
- Zend_Controller - Быстрый старт
- Основы Zend_Controller
- Фронт-контроллер
- Объект запроса
- Стандартный маршрутизатор: Zend_Controller_Router_Rewrite
- Диспетчер
- Контроллеры действий
- Помощники действий
- Объект ответа
- Плагины
- Использование определенной соглашением модульной структуры директорий
- Исключения
- Переход с предыдущих версий
