1.1. Скопировать репозиторий:
git clone [email protected]:/rsukhar/devstarter.git devstarter.local1.2. Установить Vagrant и Virtual Box
1.3. Создать виртуальную машину
cd devstarter.local
vagrant upЕсли всё сделано правильно, то открыв в браузере http://devstarter.local/, вы увидите страницу авторизации и сможете авторизоваться, используя данные:
- Имя пользователя: admin
- Пароль: admin
2.1. Посмотреть список учеников. С помощью пользовательского интерфейса добавить, отредактировать и удалить ученика.
2.2. С помощью http://devstarter.local/phpmyadmin/ посмотреть структуру базы данных
2.3. Найти и понять, как задаются роуты страниц учеников в routing.php
- /admin/students/
- /admin/students/create/
- /admin/students//update/
- /api/student/delete/
2.4. Найти сделанную миграцию в .provision/sql/migration-*-students.sql, которая использовалась для создания и временного наполнения таблицы пользователей
Миграции такого рода выполняются с помощью shell-команды
./minion.php --task=migrate --debug=1Скрипт находит ещё не примененные миграции и применяет их. Помимо ручного запуска этот скрипт выполняется по крону каждую минуту, поэтому все добавленные файлы миграций будут применены автоматически.
2.5. Найти модель ученика Model_Student, обратить внимание:
- Стандартное описание БД-привязок модели в соответствии с ORM-стандартами Kohana/Koseven
- В методе
describe_vof_fieldsописываются контролы для редактирования полей модели и их валидации
Контролы для редактирования описываются в формате VOF ("vsekolesa options framework"). При желании можно их посмотреть доступные типы контролов в views/admin/vof/fields/*, но прямо сейчас нам понадобится только текстовое поле ("text").
2.6. Найти и посмотреть контроллер Controller_Admin_Student. На что здесь важно обратить внимание:
- В action_list добавляется
$this->assets->add('student.list');- команда, которая добавляет на страницу все необходимые статические файлы (скрипты), связанные с этой страницей. Описание логики статических файлов и зависимостей между ними находится в конфиге config/assets.php - Для добавления и редактирования используется один и тот же view
admin/formpage, который выводит контролы для редактирования в соответствии с переденными в него настройками - Описание контролов для редактирования получается из
describe_vof_fieldsобъекта модели - Метод
set_vof_valuesмодели фильтрует, валидирует и пробует установить переданные значения в соответствии с описаниями контролов модели. Если валидация не пройдена, то он записывает ошибки во второй параметр; который в данном случае связан через bind-метод с параметром шаблонаadmin/formpage
2.7. Найти и посмотреть шаблон для вывода списка учеников views/admin/student/list.php. На что здесь обратить внимание:
- В кнопки удаления добавляется data-nonce параметр, который генерируется с помощью
Security::nonce('delete_student'). Это специальный параметр, уникальный для данного авторизованного пользователя в данный промежуток времени, и который будет передан в API-запрос, чтобы защитить от ряда веб-уязвимостей.
2.8. Найти и посмотреть контроллер Controller_API_Student. Он используется для удаления
2.9. Найти и посмотреть JS-скрипт assets/admin/js/student/list.js
По аналогии со списком учеников нужно создать страницу списка школ /admin/schools/, в котором будут выводиться названия школ и количество учеников в каждой школе. Должна быть возможность добавлять, удалять и редактировать школы.
В файле миграций помимо структуры таблицы также нужно добавить 2 школы; и случайным образом распределить существующих учеников между школами.
В шапке справа от логотипа есть переключатель, который сейчас состоит из одного пункта "Ученики". Нужно добавить второй пункт "Школы", чтобы переключатель работал.