Yii — это высокопроизводительный фреймворк, быстрый, безопасный и хорошо подходящий для приложений Web 2.0. Он предпочитает соглашение по конфигурации, что означает, что если вы будете следовать его рекомендациям, вы в конечном итоге будете писать гораздо меньше кода, чем в противном случае (и меньше кода влечет за собой меньше ошибок). Кроме того, он предлагает множество удобных функций из коробки, таких как строительные леса, объекты доступа к данным, темы, управление доступом, кэширование и многое другое. В этой статье я расскажу об основах использования Yii для создания системы CRUD.
Начиная
Я предполагаю, что у вас уже есть Apache, PHP (5.1 или выше) и MySQL, установленные в вашей системе, поэтому первым шагом является загрузка файлов инфраструктуры. Перейдите на официальный сайт Yii и загрузите последнюю стабильную версию, которая на момент написания этой статьи была 1.1.13.
Извлеките ZIP-файл, чтобы получить папку yii-1.1.13.e9e4a0
(идентификатор версии может отличаться в зависимости от загружаемой версии), и переименуйте его в yii
, затем переместите папку в корневой каталог, доступный через Интернет. Для меня это C:\wamp\www
поэтому расположение файлов фреймворка будет C:\wamp\www\yii
. Я буду называть это <YiiRoot>
протяжении всей статьи, чтобы вы могли легко следовать, даже если ваши собственные настройки отличаются.
Далее мы должны проверить, какие функции Yii будут поддерживаться нашей системой. Зайдите на http: // localhost / yii / needs / в вашем браузере, чтобы увидеть подробности о требованиях инфраструктуры. Поскольку мы будем работать с базой данных MySQL, у вас должно быть включено расширение MYSQL PDO.
Мы хотели быстро проверить требования Yii, поэтому мы помещаем файлы в доступную директорию, но рекомендуется хранить файлы Yii вне корневого веб-каталога. После проверки не стесняйтесь переместить его в другое место.
Движение вперед
Каждое веб-приложение имеет структуру каталогов, и приложения Yii также должны поддерживать иерархическую структуру внутри веб-корня. Чтобы создать скелетное приложение с подходящей структурой каталогов, мы можем использовать инструмент командной строки Yii yiic . Перейдите в корневой каталог и введите следующее:
<YiiRoot> frameworkyiic webapp yiitest
Это создаст скелетное приложение под названием yiitest
с минимально необходимыми файлами. Внутри вы найдете index.php
который служит в качестве сценария входа; он принимает запросы пользователя и решает, какой контроллер должен обработать запрос.
Yii основан на принципах MVC и OOP, поэтому вы должны хорошо разбираться в этих темах. Если вы не знакомы с MVC, прочитайте серию SitePoint The MVC Pattern и PHP, которая предлагает хорошее введение.
URL-адреса Yii выглядят как http: //localhost/yiitest/index.php? R = controllerID / actionID . Например, в системе ведения блога URL может быть http: //localhost/yiitest/index.php? R = post / create . post
— это идентификатор контроллера, а create
— это идентификатор действия. Сценарий ввода решает, какой контроллер и метод вызывать, основываясь на идентификаторах.
Контроллер с идентификатором post должен быть назван PostController
(идентификатор удаляет суффикс «Controller» из имени класса и преобразует первую букву в нижний регистр). Идентификатор действия — это идентификатор метода, присутствующего внутри контроллера аналогичным образом; внутри PostController
будет метод с именем actionCreate()
.
Может быть несколько представлений, связанных с контроллером, поэтому мы храним файлы представлений в protected/views/ controllerID
папках protected/views/ controllerID
. Мы можем создать файл представления для нашего контроллера с именем create.php
в вышеописанном каталоге, а затем представить это представление пользователям, просто написав следующий код для actionCreate()
:
public function actionCreate() { $this->render('create'); }
Также возможно передать дополнительные данные в представление при необходимости. Это делается следующим образом:
$this->render('create', array('data' => $data_item));
Внутри файла представления мы можем получить доступ к данным через переменную $data
.
Представление также имеет доступ к $this
который указывает на экземпляр контроллера, который его отобразил.
Кроме того, если вам нужны удобные для пользователя URL-адреса, вы можете раскомментировать следующее в protected/config/main.php
:
'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( '<controller:w+>/<id:d+>'=>'<controller>/view', '<controller:w+>/<action:w+>/<id:d+>'=>'<controller>/<action>', '<controller:w+>/<action:w+>'=>'<controller>/<action>', )
URL будут выглядеть как http: // localhost / yiitest / controllerID / actionID .
Разработка приложения CRUD
Теперь, когда вы знаете важные соглашения Yii, пришло время начать работу с CRUD. В этом разделе мы разработаем простую систему, в которой пользователь может выполнять операции CRUD (создавать, извлекать, обновлять и удалять) над сообщением в блоге.
Шаг 1
Создайте базу данных MySQL и внутри yiitest
создайте таблицу с именем posts
. Таблица будет иметь только 3 столбца для наших целей: id
, title
и content
.
CREATE TABLE posts ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100), content TEXT )
Откройте файл конфигурации вашего приложения ( protected/config/main.php
) и раскомментируйте следующее:
'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=testdrive, 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', )
Замените testdrive на имя нашей базы данных, т.е. yiitest . И, очевидно, вы должны предоставить необходимые учетные данные для подключения к Yii.
Шаг 2
В Yii каждая таблица базы данных должна иметь соответствующий класс модели типа CActiveRecord
. Преимущество состоит в том, что нам не нужно иметь дело с таблицами базы данных напрямую. Вместо этого мы можем работать с объектами модели, которые соответствуют различным строкам таблицы. Например, класс Post
является моделью для таблицы сообщений. Объект этого класса представляет строку из posts
таблицы и имеет атрибуты, представляющие значения столбцов.
Для быстрой генерации модели мы будем использовать веб-инструмент Yii gii. Этот инструмент можно использовать для генерации моделей, контроллеров и форм для операций CRUD. Чтобы использовать gii в вашем проекте, найдите следующее в файле конфигурации вашего приложения, раскомментируйте его и добавьте пароль.
'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>your password to access gii, 'ipFilters'=>array('127.0.0.1','::1'), )
Затем получите доступ к gii по следующему URL: http: //localhost/yiitest/index.php? R = gii . Если вы используете удобные для пользователя URL-адреса, URL-адрес: http: // localhost / yiitest / gii .
Нажмите на генератор моделей. gii спросит у вас имя таблицы; введите «posts» в качестве имени таблицы, а для модели — «Post». Затем нажмите Generate, чтобы создать модель.
Проверьте protected/models
и вы найдете файл Post.php
там.
Шаг 3
Теперь нажмите на CRUD Generator. Введите название модели как «Пост». Идентификатор контроллера будет автоматически заполнен как «пост». Это означает, что новый контроллер будет сгенерирован под именем PostController.php
.
Нажмите на Generate. Процесс сгенерирует контроллер, а также несколько файлов просмотра с формами, необходимыми для операций CRUD.
Теперь у вас есть новое приложение CRUD! Нажмите на ссылку «попробовать сейчас», чтобы проверить это. Для управления сообщениями вам необходимо войти в систему как admin / admin.
Для создания нового сообщения вам потребуется доступ к http: // localhost / yiitest / post / create, а для обновления определенного сообщения просто укажите в своем браузере http: // localhost / yiitest / post / update / postID .
Точно так же вы можете перечислить все сообщения и удалить некоторые или все из них.
Вывод
Yii очень силен в разработке проектов Web 2.0. Фактически, мы только что увидели, как легко создать полнофункциональную систему CRUD всего за несколько минут! Очевидно, что Yii может сэкономить вам много тяжелой работы, потому что вам не нужно начинать с нуля. Yii дает нам основание, и мы можем расширить его по своему усмотрению.