В этом разделе мы расскажем, как создать наше первое Yii-приложение.
Для этого будем использовать мощную утилиту автоматической генерации кода yiic
. Будем считать для удобства,
что YiiRoot
- это директория, куда установлен Yii, а WebRoot
- корневая директория вашего веб-сервера.
Запускаем yiic
в консоли со следующими параметрами:
% YiiRoot/framework/yiic webapp WebRoot/testdrive
Примечание: При использовании
yiic
на Mac OS, Linux или Unix вам может понадобится изменить разрешения для файлаyiic
, чтобы сделать его исполняемым. Альтернативный вариант запуска утилиты представлен ниже:% cd WebRoot/testdrive % php YiiRoot/framework/yiic.php webapp WebRoot/testdrive
В результате в директории WebRoot/testdrive
будет создан каркас приложения.
Созданное приложение - хорошая отправная точка для добавления необходимого функционала, так как оно уже содержит все необходимые директории и файлы. Не написав ни единой строчки кода, мы уже можем протестировать наше первое Yii-приложение, перейдя в браузере по следующему URL:
http://hostname/testdrive/index.php
Как можно видеть, приложение содержит три страницы: главную, страницы обратной связи и авторизации. Главная страница содержит немного информации о приложении и статусе пользователя, страница обратной связи содержит форму для отправки вопросов и пожеланий, а страница авторизации позволяет пользователю аутентифицироваться и получить доступ к закрытой части сайта (см. рисунки ниже).
Главная страница
Страница обратной связи
Страница обратной связи с ошибками ввода
Страница обратной связи с успешно отправленной формой
Страница авторизации
Наше приложение имеет следующую структуру папок. Подробное описание этой структуры можно найти в соглашениях.
testdrive/ index.php входной (entry) скрипт приложения assets/ содержит файлы ресурсов css/ содержит CSS-файлы images/ содержит картинки themes/ содержит темы оформления приложения protected/ содержит защищенные файлы приложения yiic скрипт yiic yiic.bat скрипт yiic для Windows commands/ содержит команды 'yiic' shell/ содержит команды 'yiic shell' components/ содержит компоненты для повторного использования MainMenu.php класс виджета 'MainMenu' Identity.php класс 'Identity' для аутентификации views/ содержит файлы представлений для виджетов mainMenu.php файл представления для виджета 'MainMenu' config/ содержит конфигурационные файлы console.php файл конфигурации консоли main.php файл конфигурации веб-приложения controllers/ содержит файлы классов контроллеров SiteController.php класс контроллера по умолчанию extensions/ содержит сторонние расширения messages/ содержит переведенные сообщения models/ содержит файлы классов моделей LoginForm.php модель формы для действия 'login' ContactForm.php модель формы для действия 'contact' runtime/ содержит временные файлы views/ содержит файлы представлений контроллеров и файлы макетов (layout) layouts/ содержит файлы представлений макетов main.php макеты по умолчанию для всех представлений site/ содержит файлы представлений для контроллера 'site' contact.php файл представления для действия 'contact' index.php файл представления для действия 'index' login.php файл представления для действия 'login' system/ содержит файлы системных представлений
Большинство веб-приложений используют базы данных, и наше приложение не исключение. Для использования базы данных
вначале необходимо объяснить приложению, как к ней подключиться.
Это делается путем изменения параметров в конфигурационном файле
WebRoot/testdrive/protected/config/main.php
, как показано ниже:
return array(
......
'components'=>array(
......
'db'=>array(
'connectionString'=>'sqlite:protected/data/source.db',
),
),
......
);
Здесь мы добавили элемент db
в массив components
, который указывает приложению, что необходимо подключиться
к базе SQLite WebRoot/testdrive/protected/data/source.db
. Учтите, что как файл базы данных, так и директория,
в которой он содержится, должны быть доступны для записи процессом веб-сервера, как того требует SQLite.
Примечание: Для использования Yii с базами данных необходимы расширение PHP PDO extension и расширение PDO для вашей базы данных. Для тестового приложения нам понадобится включить расширения
php_pdo
иphp_pdo_sqlite
.
Используя любую утилиту для администрирования SQLite, создадим базу данных следующей схемы:
CREATE TABLE User ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, username VARCHAR(128) NOT NULL, password VARCHAR(128) NOT NULL, email VARCHAR(128) NOT NULL );
Примечание: Если вы используете БД MySQL, в выражении выше следует заменить
AUTOINCREMENT
наAUTO_INCREMENT
.
Для простоты мы создадим в базе данных только таблицу User
.
А теперь самое веселое. Мы бы хотели добавить операции CRUD
(создание, чтение, обновление и удаление) для только что созданной таблицы User
-
это часто необходимо при создании реальных приложений. Чтобы сгенерировать необходимый код,
снова воспользуемся утилитой yiic
. Этот процесс также называют скаффолдинг (scaffolding).
Откроем окно консоли и выполним следующие команды:
% cd WebRoot/testdrive % YiiRoot/framework/yiic shell Yii Interactive Tool v1.0 Please type 'help' for help. Type 'exit' to quit. >> model User generate User.php The 'User' class has been successfully created in the following file: D:\wwwroot\testdrive\protected\models\User.php If you have a 'db' database connection, you can test it now with: $model=User::model()->find(); print_r($model); >> crud User generate UserController.php mkdir D:/wwwroot/testdrive/protected/views/user generate create.php generate update.php generate list.php generate show.php generate admin.php generate _form.php Crud 'user' has been successfully created. You may access it via: http://hostname/path/to/index.php?r=user
В примере выше мы использовали команду shell
утилиты yiic
для взаимодействия с
созданным каркасом приложением. В командной строке мы вводим две команды: model User
и crud User
.
Команда model
автоматически создает класс модели User
, основываясь на структуре таблицы User
,
а команда crud
генерирует класс контроллера и файлы представлений, которые обеспечивают
выполнение операций CRUD для модели User
.
Примечание: Даже, если проверка соответствия требованиям показывает, что расширение PDO и драйвер PDO, соответствующий используемой базе данных, включены, могут возникать ошибки типа "...could not find driver". В этом случае необходимо запустить утилиту
yiic
следующим образом:% php -c path/to/php.ini protected/yiic.php shellгде
path/to/php.ini
- путь до файла PHP ini
Давайте порадуемся нашим трудам, перейдя по следующему URL:
http://hostname/testdrive/index.php?r=user
Мы увидим страницу со списком пользователей из таблицы User
. Поскольку наша таблица пустая, то записей в ней не будет.
Кликнем по ссылке New User
и, если мы еще не авторизованы, отобразится страница авторизации.
Затем загрузится форма добавления нового пользователя. Заполним её и нажмем кнопку Create
.
Если при заполнении формы были допущены ошибки, мы увидим аккуратное сообщение об ошибке.
Возвращаясь к списку пользователей, мы должны увидеть в списке только что созданного пользователя.
Добавим еще несколько пользователей. Обратите внимание, что при значительном
количестве пользователей для их отображения на одной странице список будет автоматически разбиваться на страницы.
Авторизовавшись в качестве администратора (admin/admin
),
можно увидеть страницу управления пользователями по адресу:
http://hostname/testdrive/index.php?r=user/admin
Появится аккуратная таблица пользователей. Можно кликнуть на заголовок таблицы, чтобы упорядочить записи по значениям соответствующего столбца. Здесь также используется разбивка на страницы.
Все эти возможности не требуют написания кода!
Страница управления пользователями
Страница добавления нового пользователя
Signup or Login in order to comment.