Использование PHP фреймворков в разработке сайта
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
iiModule,">class=>system.gii.GiiModule,
// Пароль для входа в кодогенератор
password=>generate,
// Разрешенные ip-адреса
ipFilters=>array(127.0.0.1,::1),
),
. После авторизации будет доступен простой, удобный интерфейс для генерации кода (рис. 2.5).">После этого, для того чтобы зайти в Gii необходимо перейти по следующей ссылке в браузере: . После авторизации будет доступен простой, удобный интерфейс для генерации кода (рис. 2.5).
Так как модель используется для управления записями в одной таблице, то были сгенерированы 4 модели: Price, Category, Photo, Text. Для этого использовался раздел Model Generator, в котором в качестве имени таблицы была указана *.
Для генерации CRUD-контроллеров, в Gii есть раздел Crud Generator. Так как таблица Photo является вспомогательной, то для управлению записями в ней не нужен отдельный контроллер, поэтому были сгенерированы 3 контроллера: PriceController, MenuController (для Category), TextController.
2.6 Установка верстки и доработка каркаса
Представление в фреймворке yii - это специальный php-скрипт, состоящий из простых выражений, отвечающий за отображение элементов пользовательского интерфейса. У каждого представления есть имя, которое используется для поиска скрипта представления. Если имя представления test, то имя скрипта представления test.php.
Для отображения представления используется метод CController::render, которому передается имя представления и массив значений, который преобразуется в локальные переменные внутри представления. Например, если внутри действия update контроллера ItemController вызывается:
$this->render(update,array(
model=>$model,
language=>Yii::app()->language,
));
то, скрипт представления будет расположен по следующему пути: protected/views/item/update.php, а внутри него будут доступны две локальные переменные: $model и $language.
Внутри скрипта представления так же доступен экземпляр контроллера, к которому можно обратиться с помощью $this. Это позволяет использовать внутри представления свойства и методы контроллера, например, для отображения виджета, кэширования, вывода заголовка страницы и т. д.
Так же, при обработке скрипта представления неявно используется специальное представление - макет, который декорирует пользовательский интерфейс и может содержать такие элементы как шапка сайта и подвал. Внутри макета доступна локальная переменная $content, в которой хранится вывод скрипта представления. Макет, по-умолчанию, расположен по следующему пути: protected/views/layouts/main.php.
Виджет - это компонент, встраиваемый в представление, с целью отображения сложной, самостоятельной части интерфейса. Например, виджет может использоваться для вывода меню, таблицы и т. д.
Помимо виджетов, в фреймворке присутствует класс CHtml, статические методы которого позволяют выводить ссылки на основе заданных маршрутов(route), формы и её элементов ввода и т. д. Наиболее часто используемый метод это Chtml::link(), который позволяет вывести ссылку на основе правил маршрутизации.
Все действия по установке верстки и доработке каркасы можно разделить на следующие пункты:
1.настройка макета;
2.настройка представлений видимых для посетителей;
.доработка правил валидации моделей и провайдеров данных;
.настройка представлений администратора;
При разработке проекта основным языком являлся английский, все остальные языки были добавлены с помощью файлов переводов и будут описаны позже в работе.
2.6.1 Настройка макета
Установка верстки была начата с макета. Основные элементы, которые присутствуют в макете это шапка сайта, включая меню, меню категорий справа и подвал.
Для отображения меню сайта использовался виджет zii.widgets.CMenu, который очень просто подключается и настраивается:
widget(zii.widgets.CMenu,array(">widget(zii.widgets.CMenu,array(
// Список пунктов
items=>array((label=>Yii::t(menu,Home), url=>array(/price/index)),(label=>Yii::t(menu,New), url=>array(/price/new)),(label=>Yii::t(menu,Help), url=>array(text/index,page=>help)),(label=>Yii::t(menu,Price), url=>array(/price/get)),(label=>Yii::t(menu,Contact), url=>array(/text/index,page=>contact)),(label=>Yii::t(menu,Logout), url=>array(/admin/logout),visible=>!Yii::app()->user->isGuest),
),
)); ?>
где label - название пункта меню, url - маршрут(route) к контроллеру и действию, а visible - статус видимости пункта. Для отображения меню категорий товаров использовался виджет CTreeView, настройка которого полностью аналогична, за исключением формирования списка вложенных категорий, который был вынесен в отдельный виджет-адаптер - LeftMenu, который изначально разрабатывался для вывода меню слева, но в связи с неудобством интерфейса вынесен в правую часть.
Так же, для отображения заголовка страницы использовалось св-во контроллера $this->pageTitle.
2.6.2 Настройка представлений видимых для посетителей
Для отображения главной страницы с товарами, а так же страницы новинок использовался виджет zii.widgets.CListView:
widget(zii.widgets.CListView,array(">widget(zii.widgets.CListView,array(
dataProvider=>$dataProvider,
itemView=>_item,
template=>{sorter}{items}{pager},
sortableAttributes=>array(
title.ucfirst(Yii::app()->language),
time,
cost
),
pagerCssClass=>pager clear,
));?>
где dataProvider - провайдер данных, itemView - специальный файл представления отображающий одну модель в виде локальной переменной $data, template -