Kohana 3.1. Видеоурок 18-1

Приветствую уважаемого читателя!
18-й видеоурок, из-за объемности материала, пришлось разделить на две подчасти. А из-за логичности изложения обе подчасти будут все же единым 18-м видеоуроком.
План всего 18-го видеоурока:
- Разработка модели «Материал»
- Связь материала с категорией
- Вывод материала заданной категории
Постановка задачи
- Материал – это просто текст, хранящийся в базе данных.
- Каждый материал закреплен за отдельной категорией.
- В одной категории может быть несколько материалов.
- Есть страница, на которой, в виде дерева, перечислены все категории сайта. Название каждой категории – ссылка, открывающая страницу с материалами выбранной категории.
Решение поставленной задачи
- Каждая категория должна иметь отдельный URL для перехода на страницу с материалами вида http://kohana/materials/category/cat_name
- Отдельная модель «Materials» будет решать все задачи по работе с сущностью «Материалы обр. системы».
Доработка модели Category и таблицы Tree
В таблицу БД tree, к каждой из категорий, необходимо добавить дополнительное поле URL для хранения параметра cat_name.
Значение поля URL будет вводится при создании категории администратором сайта.
Любое получаемое от пользователя значение должно быть подвергнуто валидации, тем более, в нашем случае оно участвует в формировании URL.
Поле URL должно соответствовать следующим требованиям:
- не пустое;
- содержать только латинские буквы и цифры;
- максимальное количество символов не должно превышать ограничение поля в таблице БД;
- должно быть уникальным.
Валидационные правила должны выглядеть следующим образом:
$validation->rule('url', 'not_empty');
$validation->rule('url', 'alpha_numeric');
$validation->rule('url', 'max_length', array(':value', '200'));
$validation->rule('url', array($this, 'unique_url'));
Функция callback для проверки на уникальность поля url (‘unique_url’):
public function unique_url($url)
{
return ! DB::select(array(DB::expr('COUNT(url)'), 'total'))
->from($this->tableName)
->where('url', '=', $url)
->execute()
->get('total');
}
Первая подчасть посвящена доработке модели категорий и базы данных с целью внедрения дополнительного параметра категории – названия, участвующего в URL.
Видеоурок 18-1:
Скачать видеоурок 18-1 (*.wmv, 34.3 МБ)
Исходники (*.zip, 1.14 МБ)
SQL-дамп (*.sql, 6.05 кБ)
<< Предыдущий видеоурок курса Следующий видеоурок курса >>
С уважением, Андрей Морковин.















Pingback: Создаем модель в Kohana - Видеоурок
Pingback: Видеоурок по PHP - Вывод материала из базы данных