Создание первого приложения
В этом разделе мы расскажем, как создать наше первое приложение.
Для создания нового приложения мы будем использовать yiic
(консольную утилиту), для
генерации кода — Gii
(мощный веб кодогенератор). Будем считать для удобства,
что YiiRoot
— это директория, куда установлен Yii, а WebRoot
— корневая
директория веб-сервера.
Запускаем yiic
в консоли со следующими параметрами:
Примечание: При использовании
yiic
на Mac OS, Linux или Unix вам может понадобиться изменить права доступа для файлаyiic
, чтобы сделать его исполняемым. Альтернативный вариант запуска утилиты представлен ниже:
В результате в директории WebRoot/testdrive
будет создан каркас приложения.
Созданное приложение — хорошая отправная точка для добавления необходимого функционала, так как оно уже содержит все необходимые директории и файлы. Не написав ни единой строчки кода, мы уже можем протестировать наше первое Yii-приложение, перейдя в браузере по следующему URL:
Приложение содержит четыре страницы: главную, страницу «о проекте», страницу обратной связи и страницу авторизации. Страница обратной связи содержит форму для отправки вопросов и предложений, а страница авторизации позволяет пользователю аутентифицироваться и получить доступ к закрытой части сайта (см. рисунки ниже).
Главная страница

Страница обратной связи

Страница обратной связи с ошибками ввода

Страница обратной связи с успешно отправленной формой

Страница авторизации

Наше приложение имеет следующую структуру директорий. Подробное описание этой структуры можно найти в соглашениях.
Описанный выше генератор может создать файлы, необходимые при работе с
системой контроля версий Git. Приведённая далее команда создаст все необходимые
.gitignore
(содержимое assets
и runtime
не должно оказаться в репозитории)
и .gitkeep
(важные директории включаем в репозиторий даже если они пустые):
Ещё одна поддерживаемая система контроля версий — Mercurial. Если вы пользуетесь
ей, передайте третьим параметром hg
. Данная возможность доступна с версии 1.1.11.
Соединение с базой данных
Большинство веб-приложений используют базы данных, и наше приложение не исключение. Для использования базы данных
необходимо объяснить приложению, как к ней подключиться.
Это делается в конфигурационном файле WebRoot/testdrive/protected/config/main.php
.
Например, так:
В приведённом выше коде указано, что приложение должно подключиться к базе данных SQLite
WebRoot/testdrive/protected/data/testdrive.db
как только это понадобится. Отметим, что
база данных SQLite уже включена в сгенерированное приложение. В этой базе имеется только
одна таблица tbl_user
:
Если вы хотите использовать базу данных MySQL, то вы можете воспользоваться файлом
WebRoot/testdrive/protected/data/schema.mysql.sql
для её создания.
Примечание: Для работы с базой данных Yii требуется расширение PHP PDO и соответствующий драйвер PDO. Для тестового приложения необходимо подключить расширения
php_pdo
иphp_pdo_sqlite
.
Реализация операций CRUD
А теперь самое интересное. Мы бы хотели добавить операции CRUD
(создание, чтение, обновление и удаление) для только что созданной таблицы tbl_user
—
это часто необходимо при разработке реальных приложений. Вместо ручного написания кода мы
воспользуемся веб кодогенератором Gii
.
Информация: Gii доступен, начиная с версии 1.1.2. Ранее для тех же целей использовался уже упомянутый
yiic
. Подробнееyiic
описан в разделе «генерация CRUD при помощи yiic shell».
Настройка Gii
Для того чтобы использовать Gii, нужно отредактировать
файл конфигурации приложения
WebRoot/testdrive/protected/config/main.php
:
После этого перейдите по URL http://hostname/testdrive/index.php?r=gii
и
введите указанный в конфигурации пароль.
Генерация модели User
После входа зайдите в раздел Model Generator
:
Model Generator

В поле Table Name
введите tbl_user
. В поле Model Class
— User
.
Затем нажмите на кнопку Preview
. Вы увидите новый файл, который будет
сгенерирован. После нажатия кнопки Generate
в protected/models
будет создан
файл User.php
. Как будет описано далее в руководстве, класс модели User
позволяет работать с данными в таблице tbl_user
в стиле ООП.
Генерация CRUD
После генерации класса модели мы сгенерируем код, реализующий для неё операции CRUD.
Выбираем Crud Generator
:
CRUD Generator

В поле Model Class
вводим User
. В поле Controller ID
— user
(в нижнем регистре).
Теперь нажимаем Preview
и затем Generate
. Генерация кода CRUD завершена.
Доступ к страницам CRUD
Давайте порадуемся нашим трудам, перейдя по следующему URL:
Мы увидим страницу со списком пользователей из таблицы tbl_user
. Поскольку наша таблица пуста, то записей в ней не будет.
Кликнем по кнопке Create User
и, если мы еще не авторизованы, отобразится страница авторизации.
В случае успешной авторизации загрузится форма добавления нового пользователя. Заполним её и нажмем кнопку Create
.
Если при заполнении формы были допущены ошибки, мы увидим красивое сообщение об ошибке.
Вернувшись назад к списку пользователей, мы должны увидеть только что созданного пользователя.
Повторите описанную операцию и добавьте ещё несколько пользователей. Обратите внимание, что при значительном
количестве пользователей для их отображения на одной странице список будет автоматически разбиваться на страницы.
Выполнив вход в качестве администратора (admin/admin
),
можно увидеть страницу управления пользователями по адресу:
Появится наглядная таблица пользователей. Кликнув на название одного из полей заголовка таблицы, можно упорядочить записи по значениям соответствующего столбца. Для просмотра, редактирования или удаления записей можно воспользоваться кнопками в соответствующих строках таблицы. Также можно переходить на разные страницы, фильтровать результаты и производить поиск по ним.
Всё это не требует написания ни одной строчки кода!
Страница управления пользователями

Страница добавления нового пользователя
