T.M. SoftStudio

feci quod potui, faciant meliora potentes

Перевод сайта на Zend Framework

 

Примечание

Для данной статьи использовалась версия Zend Framework 1.11.11.

Введение

Платформа или фреймворк?

Несомненно, Zend Framework представляет собой именно фреймворк программирования, так как платформа программирования обеспечивает помимо библиотек еще и среду выполнения для приложений, созданных на основе библиотек — фреймворка. 

Zend Framework предоставляет только библиотеки программного интерфейса для создания PHP-приложений с объектно-ориентированным кодом, реализующим MVC-архитектуру.

 

Структура дистрибутива Zend Framework

Дистрибутив фреймворка Zend Framework представляет собой каталог, содержащий две папки bin и library.

Папка bin содержит инструменты командной строки zf.php, zf.sh и zf.bat компонента Zend_Tool. Файлы zf.php и zf.sh предназначены для использования в системе Unix, а файлы zf.php и zf.batв системе Windows.

Инструмент Zend_Tool с помощью команды create project позволяет создать основу Web-проекта:

zf create project [путь проекта]

Другие распространенные команды инструмента Zend_Tool:

  • create module – создает Zend-модуль.

  • create controller – создает Zend-контроллер.

  • create action – создает действие для Zend-контроллера.

  • create view – создает представление для Zend-контроллера.

  • create model – создает модель.

  • create form – создает форму.

  • configure – устанавливает конфигурацию DbAdapter-адаптера соединения с базой данных.

  • create dbtable – создает файлы модели данных.

  • enable layout – включает компоновку.

  • --setup storage-directory – устанавливает каталог хранения.

  • --setup config-file – создает конфигурационный zf.ini файл.

Для инструмента Zend_Tool также существует набор пользовательских переменных среды:

  • ZF_HOME – указывает путь каталога фреймворка.

  • ZF_STORAGE_DIRECTORY – указывает путь каталога хранения.

  • ZF_CONFIG_FILE – указывает путь конфигурационного zf.ini файла.

  • ZEND_TOOL_INCLUDE_PATH – указывает путь каталога библиотеки Zend-компонентов.

  • ZF_TOOL_INCLUDE_PATH_PREPEND – указывает префикс для пути каталога библиотеки Zend-компонентов.

Папка library дистрибутива Zend Framework содержит подпапку Zend с компонентами фреймворка.

Структура библиотеки Zend Framework организована таким образом, что Zend-компоненты слабо связаны между собой и их можно использовать отдельно.

Компоненты библиотеки Zend Framework можно разбить на следующие группы:

  • Компоненты, реализующие архитектуру Model-View-Controller (MVC):

  • Zend_Application, Zend_Application_Bootstrap, Zend_Application_Module, Zend_Application_Resource;

  • Zend_Controller_Front, Zend_Controller_Action, Zend_Controller_Dispatcher, Zend_Controller_Plugin, Zend_Controller_Router;

  • Zend_Form;

  • Zend_Layout, Zend_View, Zend_View_Filter, Zend_View_Helper;

  • Компоненты разработки проекта:

  • Zend_CodeGenerator;

  • Zend_Reflection;

  • Zend_Tool_Framework, Zend_Tool_Project;

  • Компоненты для работы с базой данных:

  • Zend_Db, Zend_Db_Adapter, Zend_Db_Profiler, Zend_Db_Select, Zend_Db_Table;

  • Компоненты интернационализации и локализации проекта:

  • Zend_Currency;

  • Zend_Date;

  • Zend_Locale;

  • Zend_Measure;

  • Zend_Translate;

  • Компоненты аутентификации-авторизации и управления сессией:

  • Zend_Acl;

  • Zend_Auth;

  • Zend_Session;

  • Компоненты создания и использования Web-сервисов:

  • Создание: Zend_Feed, Zend_Gdata, Zend_Http_Client, Zend_Rest_Client, Zend_Service, Zend_XmlRpc_Client;

  • Потребление: Zend_Amf_Server, Zend_Json_Server, Zend_Server_Definition, Zend_Server_Reflection, Zend_Rest_Server, Zend_Soap_Server, Zend_XmlRpc_Server;

  • Компоненты сообщений, форматирования и поиска:

  • Zend_Json;

  • Zend_Mail, Zend_Mime;

  • Zend_Pdf;

  • Zend_Search_Lucene;

  • Базовые компоненты:

  • Zend_Cache, Zend_Config, Zend_Console_Getopt, Zend_Debug, Zend_Filter, Zend_Loader, Zend_Loader_Autoloader, Zend_Log, Zend_Memory Zend_Registry, Zend_Validate, Zend_Version;

Модель программирования Zend Framework

Сгенерированная инструментом Zend_Tool основа проекта

Как уже было сказано, использование фреймворка Zend Framework приводит к организации кода сайта согласно схемы Model-view-controller (MVC).

Напомним, что архитектура MVC подразумевает разделение кода на три части:

  • Модель – предоставляет данные приложения.

  • Представление – отображает данные пользователю.

  • Контроллер – передает данные от модели представлению и обратно.

Команда create project инструмента Zend_Tool создает для приложения файловую структуру, упрощающую разделение кода приложения на вышеуказанные три части MVC:

Каталог сайта

|-- application

| |-- Bootstrap.php

| |-- configs

| | |-- application.ini

| |-- controllers

| | |-- ErrorController.php

| | |-- IndexController.php

| |-- models

| |-- views

| |-- helpers

| |-- scripts

| |-- error

| |-- error.phtml

| |-- index

| |-- index.phtml

|-- docs

| |-- README.txt

|-- library

| |-- Zend

|-- public

| |-- .htaccess

| |-- index.php

|-- tests

|-- application

| |-- controllers

| |-- IndexControllerTest.php

|-- library

|-- bootstrap.php

|-- phpunit.xml

|-- .zfproject.xml

Точкой входа в приложение является файл index.php папки public. Для того чтобы при HTTP-запросе к сайту Web-сервер обрабатывал именно этот файл, в конфигурационном файле httpd.conf сервера необходимо указать путь к папке public в качестве значения свойства DocumentRoot.

Однако лишь на немногих хостингах разрешен доступ к файлу httpd.conf, поэтому можно перенести файл .htaccess из папки public в корень каталога сайта и изменить его код таким образом, чтобы перенаправить все запросы в папку public:

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""

RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$

RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f

RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

Подразумевается, что при этом включен модуль mod_rewrite в конфигурационном файле httpd.conf сервера:

LoadModule rewrite_module modules/mod_rewrite.so

В файле .htaccess запрещен также доступ к самому файлу .htaccess и к сгенерированному файлу .zfproject.xml, который содержит описание сгенерированной инструментом Zend_Tool файловой структуры. Файл .zfproject.xml нужен, если предполагается дальнейшее использование инструмента Zend_Tool для генерации компонентов приложения.

Сгенерированная начальная страница index.php приложения будет иметь следующий код:

<?php

// Define path to application directory

defined('APPLICATION_PATH')

|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment

defined('APPLICATION_ENV')

|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path

set_include_path(implode(PATH_SEPARATOR, array(

realpath(APPLICATION_PATH . '/../library'),

get_include_path(),

)));

/** Zend_Application */

require_once 'Zend/Application.php';

// Create application, bootstrap, and run

$application = new Zend_Application(

APPLICATION_ENV,

APPLICATION_PATH . '/configs/application.ini'

);

$application->bootstrap()

->run();

Примечание

Во фреймворке Zend Framework для файлов, содержащих только PHP-код, закрывающий тег ?> принято не использовать.

В коде файла public/index.php с помощью стандартной функции:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

устанавливается значение именованной константы APPLICATION_PATH, указывающей путь к папке application Zend-проекта, а также значение именованной константы – переменной окружения APPLICATION_ENV как «production», что обеспечивает включение соответствующего набора настроек, определенных в конфигурационном файле application/configs/application.ini.

Далее с помощью стандартной функции:

string set_include_path ( string $new_include_path )

в список каталогов, в которых такие стандартные функции как require, include, fopen(), file(), readfile() и file_get_contents() ищут файлы, добавляет путь к папке library.

Кстати включение пути можно осуществить 5 способами:

  • В конфигурационном файле php.ini с помощью свойства include_path.

  • В конфигурационном файле .htaccess с помощью параметра php_value include_path.

  • В коде с помощью стандартной функции string ini_set ( string $varname , string $newvalue ).

  • В коде с помощью стандартной функции set_include_path().

  • В коде с помощью параметра стандартной функции include().

Далее в коде файла public/index.php с помощью стандартной функции require_once в код включается код файла Application.php Zend-библиотеки, что дает возможность создать экземпляр класса Zend_Application и вызвать его методы bootstrap() и run().

Класс Zend_Application обеспечивает начальную загрузку ресурсов приложения. Методы bootstrap() и run() класса Zend_Application создают экземпляр класса Bootstrap файла application/Bootstrap.php, расширяющего класс Zend_Application_Bootstrap_Bootstrap, и вызывают его методы bootstrap() и run() (унаследованные от классов Zend_Application_Bootstrap_Bootstrap и Zend_Application_Bootstrap_BootstrapAbstract), запуская загрузку и передавая управление классу Zend_Controller_Front компонента Zend_Controller.

Фронт-контроллер Zend_Controller_Front обеспечивает обработку всех запросов приложения с их распределением по контроллерам действий папки application/controllers на основе URL-адреса запроса.

Распределение запросов по контроллерам действий на основе URL-адреса производится следующим образом. При общем виде URL-адреса:

http://site/nameClass/function

фронт-контроллер инициализирует контроллер nameClassController и вызовет его метод functionAction().

Если в URL-адресе отсутствует действие, тогда вызывается метод indexAction() контроллера.

Если в URL-адресе отсутствует контроллер и действие, тогда вызывается метод indexAction() контроллера IndexController.

По умолчанию фронт-контроллер Zend_Controller_Front включает класс Zend_Controller_Action_Helper_ViewRenderer, являющийся помощником действия, который при вызове действия контроллера обеспечивает использование шаблона-скрипта каталога application/views/scripts/ Zend-проекта. Помощник ViewRenderer устанавливает соответствие между действием контроллера и шаблоном каталога application/views/scripts/ следующим образом:

Имя контроллера соответствует папке каталога application/views/scripts/.

Имя действия соответствует имени файла .phtml.

Таким образом, при вызове метода indexAction() контроллера IndexController используется шаблон application/views/scripts/index/index.phtml.

Помощник ViewRenderer создает экземпляр класса Zend_View и передает ему для воспроизведения соответствующий шаблон-скрипт с параметрами, из которого объект Zend_View формирует HTML-страницу, которая передается обратно контроллеру и затем фронт-контроллеру в объекте ответа, собирающим HTTP-заголовки и HTML-страницу вместе. В заключение фронт-контроллер посылает объект ответа клиенту приложения.

Zend_Layout

Компонент Zend_Layout позволяет создать единый макет для Web-страниц сайта.

Использование компонента Zend_Layout требует для приложения дополнительных настроек. Самый простой способ определить настройки для компонента Zend_Layout – это воспользоваться инструментом Zend_Tool:

zf enable layout

Для того чтобы инструмент Zend_Tool работал в контексте проекта, необходимо предварительно в командной строке перейти в каталог проекта:

cd /d d:

cd D:\WebServers\home\[site]\[root]

В результате в конфигурационный файл application\configs\application.ini будет добавлена строка:

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

Также будет создана папка application\layouts\scripts с файлом layout.phtml:

<?php echo $this->layout()->content; ?>

Теперь при HTTP-запросе к сайту будет отображаться не сформированная из шаблона-скрипта HTML-страница, а HTML-страница, собранная из макета application\layouts\scripts\layout.phtml со вставленным в него шаблоном-скриптом.

В данном коде переменная $this представляет экземпляр класса Zend_View, код $this->layout() означает загрузку класса помощника вида Zend_View_Helper_Layout и вызов его метода layout(), который возвращает экземпляр класса Zend_Layout. И в заключение из объекта Zend_Layout извлекается содержимое ключа content.

В методе контроллера действий можно отключить использование макета для данного действия и можно определить для данного действия именованный макет:

<?php

class IndexController extends Zend_Controller_Action

{

public function init()

{

/* Initialize action controller here */

}

public function indexAction()

{

// action body

//Отключение макета

//$this->_helper->layout->disableLayout();

//Использование другого макета

//$this->_helper->layout->setLayout('custom');

}}

Содержимое самого макета легко формируется с помощью большого набора помощников видов.

В частности помощник видов Zend_View_Helper_Partial используется для включения шаблона в рамках своей области видимости переменных:

<?= $this->partial('partial.phtml', array('key' => 'value',…)); ?>

Отобразить шаблон можно и с помощью вызова метода render() объекта Zend_View:

<?= $this->render('header.phtml') ?>

Помощник видов Zend_View_Helper_Doctype обеспечивает вывод декларации DOCTYPE:

<?= $this->doctype('XHTML1_STRICT') ?>

Помощник видов Zend_View_Helper_HeadScript обеспечивает вывод HTML-элемента <script>:

<?php $this->headScript()->appendFile('/js/my.js');?>

<?php echo $this->headScript(); ?>

Помощник видов Zend_View_Helper_HeadLink обеспечивает вывод HTML-элемента <link>:

<?php $this->headLink()->appendStylesheet('/styles/my.css') ?>

<?php echo $this->headLink() ?>

Помощник видов Zend_View_Helper_HeadTitle обеспечивает вывод HTML-элемента <title>:

<?= $this->headTitle('My Title') ?>

Установка Zend Framework и создание проекта

Предполагается, что разработка сайта ведется на локальном сервере Denwer (http://www.denwer.ru/) операционной системы Windows.

В качестве первого шага скачаем, предварительно зарегистрировавшись, фреймворк Zend Framework в минимальном наборе, включающем в себя библиотеку фреймворка и инструменты командной строки компонента Zend_Tool (http://www.zend.com/community/downloads).

После распаковки дистрибутива Zend Framework скопируем файлы zf.php и zf.bat папки bin в папку usr\local\php5 каталога сервера Denwer, содержащую исполняемый файл php.exe.

Убедимся, что в свойствах системы Windows для переменных среды в системную переменную Path добавлен путь Z:\usr\local\php5 для запуска php.exe из командной строки.

Примечание

Диск Z:\ – это виртуальный диск работающего сервера Denwer. Вместо него можно использовать каталог WebServers физического диска.

Создадим каталог сайта в каталоге home сервера Denwer и скопируем в корневую папку каталога сайта папку library дистрибутива Zend Framework. Не забудем перезапустить сервер Denwer для автоматического создания виртуального хоста. После перезапуска сервера Denwer в конфигурационном файле Z:\usr\local\apache\conf \vhosts.conf должна появиться запись:

# Host /home/[site]/[root] (…):

#Listen 127.0.0.1:80

#NameVirtualHost 127.0.0.1:80

<VirtualHost 127.0.0.1:80>

DocumentRoot "Z:/home/[site]/[root]"

ServerName "[root].[site]"

ServerAlias "[root].[site]" "www.[root].[site]"

ScriptAlias /cgi/ "/home/[site]/cgi/"

ScriptAlias /cgi-bin/ "/home/[site]/cgi-bin/"

</VirtualHost>

Так как инструменты командной строки компонента Zend_Tool используют компонент Zend_Tool_Framework библиотеки фреймворка, в свойствах системы Windows для переменных среды необходимо создать новую пользовательскую переменную ZEND_TOOL_INCLUDE_PATH со значением:

Z:\home\[site]\[root]\library

Также в файле Z:\usr\local\php5\php.ini необходимо поменять строку:

extension_dir = "usr/local/php5/ext"

на строку:

extension_dir = "Z:/usr/local/php5/ext"

для распознавания инструментом Zend_Tool пути к папке ext.

Для тестирования инструмента Zend_Tool откроем консоль командной строки cmd.exe и наберем:

zfhelp

В результате будет выведена информация о командах инструмента Zend_Tool:

Zend Framework Command Line Console Tool v1.11.11

Details for action "" and provider ""

Version

zf show version mode[=mini] name-included[=1]

zf show version.major-part name-included[=1]

zf show version.minor-part name-included[=1]

zf show version.mini-part name-included[=1]

Config

zf create config

zf show config

zf enable config

zf enable config.manifest class-name

zf enable config.provider class-name

zf disable config

zf disable config.manifest class-name

zf disable config.provider class-name

Phpinfo

zf show phpinfo

Manifest

zf show manifest

Profile

zf show profile

Project

zf create project path name-of-profile file-of-profile

zf show project

zf show project.info

Application

zf change application.class-name-prefix class-name-prefix

Model

zf create model name module

View

zf create view controller-name action-name-or-simple-name module

Controller

zf create controller name index-action-included[=1] module

Action

zf create action name controller-name[=Index] view-included[=1] module

Module

zf create module name

Form

zf enable form module

zf create form name module

Layout

zf enable layout

zf disable layout

DbAdapter

zf configure db-adapter dsn section-name[=production]

DbTable

zf create db-table name actual-table-name module force-overwrite

zf create db-table.from-database module force-overwrite

ProjectProvider

zf create project-provider name actions

Для создания структуры сайта на основе фреймворка Zend Framework в командной строке наберем:

zf create project Z:\home\[site]\[root]

В результате в корневой папке сайта будет создан Zend-проект.

Перенесем файл .htaccess из папки public в корневую папку сайта и изменим его код таким образом, чтобы перенаправить все запросы в папку public:

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""

RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$

RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f

RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

Теперь при запросе вида:

http://www.[root].[site]/

будет открываться страница приветствия фреймворка Zend Framework:

Создание макета страниц сайта

В командной строке cmd.exe перейдем в корневой каталог сайта:

cd /d d:

cd D:\WebServers\home\[site]\[root]

Выполним команду инструмента Zend_Tool конфигурирования компонента Zend_Layout:

zf enable layout

В результате в конфигурационный файл application\configs\application.ini будет добавлена строка:

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

Также будет создана папка application\layouts\scripts с файлом layout.phtml:

<?php echo $this->layout()->content; ?>

Предположим, изначально главная страница сайта имела следующий код:

<?php

header("Content-Type: text/html; charset=utf-8");

?>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8" />

<title>My Site</title>

<link href="style_index.css" rel="stylesheet" type="text/css">

<script type="text/javascript" src="scripts/jquery-1.7.2.min.js" charset="UTF-8"></script>

<script type="text/javascript" src="auto_index.js" charset="UTF-8"></script>

</head>

<body>

<div id="main">

<div id="header" >

<div id="head" >

<img src="head.jpg" alt=""/>

</div>

<div id="logo" >

<img src="logo.jpg" alt=""/>

</div>

<div id="btn">

<img id="enter" src="enter_up.jpg" alt="" class="btn"/>

<img id="reg" src="reg_up.jpg" alt=""class="btn"/>

</div>

</div>

<div id="content">

<div id="left_cont">

. . .

</div>

<div id="mid_cont">

. . .

</div>

<div id="right_cont">

. . .

</div>

</div>

<div id="footer" >

<img src="footer.jpg" alt=""/>

</div>

</div>

</body>

</html>

С CSS-стилем:

body, html {

margin:0px;

padding:0px;

text-align:center;

}

#main {

width:951px;

margin:0 auto;

background-image: url(fon.jpg);

text-align:left;

}

#logo{

margin-left:30px;

}

#btn{

margin-left:650px;

position: absolute; top:35px;

}

#content{

margin-left:30px;

margin-right:30px;

margin-top:-5px;

margin-bottom:-20px;

background-color:#ffffff;

float:left;

width:890px;

}

#left_cont{

padding-left:10px;

width:210px;

float: left;

}

#mid_cont{

padding-left:10px;

width:430px;

float: left;

}

#right_cont{

width:200px;

float: left;

}

#footer{

margin-bottom:-10px;

clear:both;

}

Примечание

JavaScript-код страницы основывается на платформе JQuery.

Здесь содержимое страницы заключено в контейнер main, который разбивается на блоки:

  • header – заголовок.

  • content – основное содержимое.

  • footer – подвал.

В свою очередь контейнер content делится на три части – левая left_cont, средняя mid_cont и правая right_cont.

Все остальные страницы сайта имеют ту же структуру и отличаются лишь количеством блоков контейнера content.

Очевидно, что в данном случае было бы удобно создать макет для всех страниц сайта, состоящий из header – заголовка, content – основного содержимого и footer – подвала.

Поэтому изменим код страницы application\layouts\scripts\layout.phtml следующим образом:

<?php

header("Content-Type: text/html; charset=utf-8");

echo $this->doctype('HTML5');

?>

<html>

<head>

<?php

$this->headMeta()->prependHttpEquiv('Content-Type', 'text/html;charset=utf-8');

echo $this->headMeta();

$this->headTitle('My Site');

echo $this->headTitle();

$this->headLink()->appendStylesheet('styles/layout.css');

echo $this->headLink();

$this->headScript()->prependFile('js/jquery-1.7.2.min.js');

echo $this->headScript();

?>

</head>

<body>

<div id="main">

<?php echo $this->render('header.phtml') ?>

<div id="content">

<?php echo $this->layout()->content; ?>

</div>

<?php echo $this->render('footer.phtml') ?>

</div>

</body>

</html>

Примечание

Для использования кириллицы в помощнике Zend_View_Helper_HeadTitle необходимо в среде разработке в свойствах проекта установить кодировку по умолчанию UTF-8.

Так как у нас все запросы к сайту перенаправляются в папку public, связанные со страницами CSS-файлы, JavaScript-файлы и файлы изображений нужно размещать в папке public. Поэтому в каталоге public создадим папки styles, js и img и поместим в них файлы layout.css, jquery-1.7.2.min.js и изображений.

Файл layout.css будет иметь следующий код:

body, html {

margin:0px;

padding:0px;

text-align:center;

}

#main {

width:951px;

margin:0 auto;

background-image: url(../img/layout/fon.jpg);

text-align:left;

}

#logo{

margin-left:30px;

}

#content{

margin-left:30px;

margin-right:30px;

margin-top:-5px;

margin-bottom:-20px;

background-color:#ffffff;

float:left;

width:890px;

}

#footer{

margin-bottom:-10px;

clear:both;

}

Файлы header.phtml и footer.phtml поместим в папку application\layouts\scripts.

Файл header.phtml будет иметь следующий код:

<div id="header" >

<div id="head" >

<img src="img/layout/head.jpg" alt=""/>

</div>

<div id="logo" >

<img src="img/layout/logo.jpg" alt=""/>

</div>

</div>

Файл footer.phtml будет иметь следующий код:

<div id="footer" >

<img src="img/layout/footer.jpg" alt=""/>

</div>

Код файла index.phtml папки application\views\scripts\index примет следующий вид:

<?php

$this->headLink()->appendStylesheet('styles/main.css');

echo $this->headLink();

$this->headScript()->appendFile('js/main.js');

echo $this->headScript();

?>

<div id="left_cont">

. . .

</div>

<div id="mid_cont">

. . .

</div>

<div id="right_cont">

. . .

</div>

</div>

Файл main.css папки public\styles будет иметь следующий код:

#btn{

margin-left:630px;

position: absolute; top:35px;

}

#left_cont{

padding-left:10px;

width:210px;

float: left;

}

#mid_cont{

padding-left:10px;

width:430px;

float: left;

}

#right_cont{

width:200px;

float: left;

}

Файл main.js папки public\js будет иметь следующий код:

$(document).ready(function() {

$('#header').append('<div id="btn"><img id="enter" src="img/main/enter_up.jpg" alt="" class="btn"/><img id="reg" src="img/main/reg_up.jpg" alt=""class="btn"/></div>');

});

Создание страниц сайта

Если главная страница сайта имеет кнопки меню, при нажатии на которые происходит переход на другие страницы сайта, то для их создания можно воспользоваться инструментом Zend_Tool.

В командной строке cmd.exe наберем:

cd /d d:

cd D:\WebServers\home\[site]\[root]

zf create controller name_another_page

В результате в корневом каталоге сайта будут созданы файлы:

  • application\controllers\Name_another_pageController.php – класс контроллера.

  • application\views\scripts\Name_another_page\index.phtml – представление действия indexAction() контроллера.

Теперь при обработке щелчка кнопки:

$(".btn").click(function() {

var id = $(this).attr('id');

if(id=='reg'){

window.location.href='/registration';

}

});

в макет application\layouts\scripts\layout.phtml будет вставляться страница application\views\scripts\registration\ index.phtml.