Available Languages
Manual for Zend Framework 1.0.3
Содержание
- 7.1. Zend_Controller - Быстрый старт
- 7.2. Основы Zend_Controller
- 7.3. Фронт-контроллер
- 7.4. Объект запроса
- 7.5. Стандартный маршрутизатор: Zend_Controller_Router_Rewrite
- 7.6. Диспетчер
- 7.7. Контроллеры действий
- 7.8. Помощники действий
- 7.9. Объект ответа
- 7.10. Плагины
- 7.11. Использование определенной соглашением модульной структуры директорий
- 7.12. Исключения
- 7.13. Переход с предыдущих версий
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
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
Эти правила будут направлять запросы, не адресованные к ресурсам (изображения, css), ко фронт-контроллеру. Если есть файлы с другими расширениями, которые вы не хотите адресовать фронт-контроллеру (файлы PDF, текстовые файлы и т.д.), то добавьте также эти расширения в соответствующее правило или создайте собственные правила перезаписи.
![]() |
Замечание |
|---|---|
Вышеприведенные правила перезаписи предназначены для веб-сервера Apache. За примерами правил перезаписи для других веб-серверов см. документацию по маршрутизаторам. |
Файл загрузки - это страница, на которую направляются все
запросы, в нашем случае это html/index.php.
Откройте html/index.php в любом текстовом редакторе
и добавьте следующие строки:
<?php
require_once 'Zend/Controller/Front.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 и
введите следующее:
<?php
/** Zend_Controller_Action */
require_once 'Zend/Controller/Action.php';
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.
<?php
/** Zend_Controller_Action */
require_once 'Zend/Controller/Action.php';
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
Теперь вы можете создавать другие контроллеры и методы действий. Поздравляем!
Welcome!
Welcome to ZFResource - The Resource for the Zend Framework.
As you see, the website is in still in progress. Many features ( like Code Directory, Code Samples, User written Tutorials, Examples and News,...) will be online in near future.
At the moment, you can search and browse the manual in your language of
choice. Don't forget to come back later to benefit from the new features.
Help Wanted:
We are still searching for people want to help building this site. If you want to see this website in your language or you have any suggestions for this site please send us an email
![[Замечание]](images/note.png)
