Автор: Kuzya
Сайт: kuzya.name
Начальный практикум в CakePHP.
Официальный сайт фреймворка: http://cakephp.org/
Русскоязычный сайт фреймворка: http://cake-php.ru/
Версия фреймворка на момент написания статьи: 1.2
К сожалению редактор форума не позволяет создавать структурированный текст, из-за чего большие части кода порой трудно читаются. В этом случае рекомендую Вам скачать PDF-вариант статьи:
practical_intro_cake.pdf (16 страниц, шрифт Times New Roman, 12pt).
1. Введение.
Здравствуйте. В этой статье я хочу описать базовые практические методы работы с фреймворком
CakePHP (далее CP). Почему я пишу именно «практические»? Потому что в этой статье не будет
описания основ CP, теории его дизайна, MVC и всего подобного. Здесь будет лишь практика. Во многих
науках есть теоретическая и практическая части. Программирование не исключение. Теорию Вы можете
почерпнуть из документации, а практика нарабатывается либо самостоятельно, либо берётся из
различных статей, в том числи и из этой. Второй вариант естественно легче, а в связке с документацией
является отличным стартом для начинающих или познающих инструмент «с нуля».
Остановимся на документации подробнее. Так как у данного фреймворка есть представительство
в нашей стране, то есть и русскоязычный перевод документации. Его Вы можете найти в Wiki сайта
(путеводитель по ней есть на главной странице). Описание версии 1.2 ещё не до конца переведено и
находится на сайте в неполном виде. Зато документация к версии 1.1 переведена полностью и может
служить хорошим подспорьем разработчикам для которых языковой барьер является существенным
препятствием на пути изучения чего-то нового. Конечно же в текущей версии языка имеются отличия от
предыдущей, но базовые основы и большая часть инструментария осталась та же. Поэтому в каких-либо
трудных ситуациях Вы можете обращаться к описанию версии 1.1. Официальная документация
находится по адресу http://book.cakephp.org/. В ней дано полное и, на мой взгляд, понятное описание
всего что есть в CP. Иногда Вам может понадобится посмотреть описание метода или свойства
определённого класса. В этом случае стоит обращаться по адресу http://api.cakephp.org/. Этот сайт
содержит данные по всему что есть внутри фреймворка. Очень удобно сделаны несколько вариантов
просмотра — по таблице классов и по списку файлов. Вы в любом случае найдёте то что Вас
интересует.
Для хорошего понимания материала читателю достаточно ознакомится с документацией в общих
чертах. Желательно создать тестовое приложение. Можно самостоятельно, можно взять описание
тестового блога. Главное, иметь хоть какое-то представление о работе фреймворка и структуре его
документации (как на русскоязычном сайте, так и на официальном). Внимание! Обязательно
ознакомьтесь с соглашениями CakePHP (http://cake-php.ru/wiki/Manual/BasicPrinciples/Conventions) и
постарайтесь всегда держать их рядом. По началу у меня было много проблем именно из-за соглашений,
поэтому что бы не мучаться почаще к ним обращайтесь.
Целью нашей практики будет написание слабой имитации интернет-магазина. В этом магазине
можно будет просматривать категории товаров, списки их содержимого, сами товары. Отдельно с
товарами можно будет производить следующие операции — заказывать, голосовать за них и оставлять о
них отзывы. Приступим.
2. Приготовления
Начнём с предварительной подготовки. Первым шагом Вам нужно скопировать файлы CP на «чистый»
хост. У меня он называется «cakephp».Если хост у Вас назван по другому то будьте внимательны к
ссылкам из статьи во избежание каких-либо проблем.
2.1 База данных
После копирования откройте файл «app/config/core.php» и измените значение настройки «Security.salt»
на любое другое что бы фреймворк перестал показывать предупреждения безопасности (информацию
по работе с настройками Вы можете получить здесь - http://cakephp.
ru/wiki/Manual/Developing/Configuration/Core). Затем в файл настроек БД (app/config/database.php), в
массив «default», внесите данные для подключения к базе. Так же добавьте в него ячейку «encoding»,
содержащую текст «utf8». Этим мы определим кодировку работы с БД. Теперь нужно заняться
непосредственно данными. В прикреплённых файлах имеется дамп базы магазина — «database.sql».
Импортируйте его в Вашу БД. При импорте, во избежание проблем с русскоязычным текстом, следует
учитывать что содержимое файла имеет кодировку utf8. Структура получившейся базы очень проста. В
ней всего 3 таблицы:
1. categories – содержит категории продуктов. Их у нас 3 — книги, музыка, электроника. Поля в
этой таблице следующие: id – порядковый номер категории, cat_name – имя категории,
cat_t_name – имя категории в транслите (для ЧПУ), about – описание категории.
2. comments – таблица с комментариями. Поля: id – номер комментария, product_id – номер
продукта к которому оставлен комментарий, author – автор комментария и answer – его
содержимое.
3. products – таблица содержащая продукты нашего псевдо-магазина. Поля в ней следующие: id –
порядковый номер товара, category_id – номер категории к которой принадлежит товар, name –
имя товара, t_name – транслитеррационное имя товара, about – описание, photo – фотография
(они будут храниться в папке «img/products» в веб-директории «app/webroot») товара, rating – его
рейтинг, cost – цена (единицы цен будут обсуждаться ниже).
2.2 Дизайн
Возьмёмся за внешний вид. Всё что нужно для этого находится в прикреплённом архиве «templates.zip».
Директории «img» и «css» скопируйте прямо в «app/webroot», предварительно удалив такие-же старые
директории. Далее пройдите в папку «./cake/libs/view/layouts/» и поместите туда шаблон
«default_layout.ctp», попутно переименовав его в «default.ctp». Это наш основной дизайн. Обратитесь к
корню сайта и Вы его увидите.
Обратите внимание на отладочную информацию внизу экрана. Там отображаются запросы к базе
данных, количество затронутых ими рядов и т.д. Нам эта информация не понадобится и мы её
отключим. Для этого снова откройте файл «./app/config/core.php» и установите параметр «debug» в 0.
Обновите страницу. Информация о запросах пропала. Теперь можно перейти непосредственно к
программированию.
3.0 Программирование.
Сейчас мы займёмся непосредственно кодом. Если в отношении него у Вас возникнут какие-то вопросы
то обращайтесь к документации. Всё что описано ниже делалось именно по ней, хотя многочисленные
ссылки на неё должны не дать Вам запутаться. В случае если у Вас что-то не будет получаться то
попробуйте вернуться к началу раздела и перечитать его заново.
3.1 Категории.
Самое первое что должен делать наш магазин — показывать список категорий товаров. Для этого мы
создадим контроллер categories и соответствующую модель. В папке контроллеров(app/controllers)
создайте файл «categorie_controler.php». В классе нового контроллера объявите функцию «index»,
которая и будет выводить нужный нам список.