В этой статье я постараюсь доходчиво объяснить общую схему работы с базой данных через фреймворк Yii (как я ее понимаю), а выглядит она следующим образом:

  1. Продумываем структуру базы данных в зависимости от технического задания.
  2. Генерируем модели данных, представления и контроллеры с помощью генератора готового кода gii, который встроен в фреймворк Yii по умолчанию (его только нужно подключить в файле настроек проекта — config->main.php).
  3. Дописываем сгенерированный код под наши нужды.

Для того чтобы не работать с какими-нибудь абстрактными данными и примерами, а на практике создать какой-нибудь работающий и «полезный» сайт напишем простенькое техническое задание. Вот оно:

Требуется создать справочник сотрудников с возможностью добавления/редактирования/просмотра их данных через панель администратора.

Запись о каждом сотруднике должна содержать в себе:

  • ФИО
  • Возраст
  • Телефон
  • Адрес
  • Заработная плата

На первый взгляд, не зная фреймворка Yii и его возможностей, задача не простая, но на практике реализовать подобную вещь очень просто. Давайте приступим. Первым делом создадим базу данных, она будет состоять из одной таблицы сотрудников, т.к. больше нам и не надо, вот она:

Мы создали таблицу, соответствующую нашим потребностям и теперь нам нужно поместить ее в базу данных, я буду использовать MySql. Для этого переходим в phpmyadmin (в моем случае http://localhost/phpmyadmin/) и создаем базу данных с именем manage_employee и кодировкой uft8_general_ci. Далее переходим на страницу отправки sql-запросов, копируем нашу таблицу employee и нажимаем выполнить. База данных создана, пора переходить к работе с фреймверком Yii.

Теперь нам нужно развернуть новый сайт на Yii. Как это сделать я писал в предыдущей статье («путь к php» «путь к файлу yiic.php» webapp «папка где должен лежать наш будущий сайт»). Сгенерировав новое приложение на Yii сразу лезем в файл настроек (protected->config->main.php) и выставляем нужные нам опции, вот что необходимо сделать:

1. Подключить базу данных, которую мы создали ранее в этой статье.

По умолчанию в качестве базы данных используется файл testdrive.db (его можно найти в «корневая директория/../data/testdrive.db»), нам же нужно переключиться на нашу базу данных, для этого изменим вот эти настройки (protected->config->main.php):

Просто раскомментируем второй блок и закомментируем первый, который подключается к testdrive.db, вот что у нас получится:

Теперь нам нужно прописать данные для подключения (хост, название бд, логин, пароль и кодировку), меняем указанные параметры под нашу бд, у меня эти настройки будут выглядеть вот так:

Как вы уже поняли, файл настроек Yii представляет собой ассоциативный массив, который содержит парные значения (значение=>ключ), которые можно добавлять (или раскомментировать) или удалять (или закомментировать).

2. Подключаем генератор готового кода gii.

Генератор готового кода gii подключается точно таким же образом, найдите в файле настроек код:

Удалите комментарии и вместо надписи «Enter Your Password Here» впишите свой пароль (например 123456). После этого можно будет использовать gii (он будет доступен по адресу http://localhost/index.php?r=gii).

Теперь когда мы настроили подключение к базе данных и подключили модуль генератора готового кода gii мы можем перейти к созданию модели и различных функций работы с этой моделью. Для этого запустим gii (http://localhost/index.php?r=gii) введем пароль и зайдем в панель управления. Сначала сгенерируем модель для нашей таблицы employee, это можно сделать на странице Model Generator. Введите название таблицы (в нашем случае employee) в поле «Table Name», поле «Model Class» заполнится автоматически, и нажмите на кнопку Generate (до генерации можно просмотреть будущий код кнопкой Preview). Новая модель, основанная на нашей таблице, находится в protected/models/Employee.php.

Не спешите закрывать gii, нам еще нужно сгенерировать CRUD (create, read, updete, delete операции с базой данных) при помощи инструмента Crud Generator. В поле Model Class введем название нашей модели (Employee) и нажмем на кнопку просмотра (Preview), мы увидим что генератор gii создаст контроллер (controllers\EmployeeController.php) и 8 представлений (views) для этого контроллера, жмем на кнопку генерации и gii добавит все вышеописанные файлы в проект. Теперь мы уже можем просматривать/редактировать/удалять/создавать список наших работников.

Для проверки всего того, что создал gii перейдем на страницу http://localhost/index.php?r=site/login и войдем в систему (логин и пароль admin). После входа в систему перейдите на сгенерированный контроллер (http://localhost/index.php?r=employee). Должна появится страница админки с надписью «Employees No results found.», она значит что все работает, но пока просто нет ни одного работника в базе данных. Давайте исправим это и добавим одного «служаку» через пункт меню справа «Create Employee». После того как вы добавите своего работника он высветится в общем списке. Кроме функции добавления работника доступны и все остальные.

Просмотрите все действия (action) сгенерированного контроллера и представлений (views), которые им соответствуют, постарайтесь перевести все на русский язык (меню и сообщения системы) и попробуйте немного отредактировать созданный код (к примеру поменять стиль вывода или убрать из списка сотрудников их id). Это обычно помогает разобраться в коде.

Именно таким образом в своих будущих приложениях на Yii можно генерировать рутинные операции работы с базой данных и менять их по своему усмотрению.

Добавить комментарий