Кэширование — крайне полезная вещь. Кэш значительно ускоряет работу веб-приложений, ведь серверу не приходится полностью выполнять все скрипты и запросы к базе данных, а можно взять часть уже подготовленных данных.
CakePHP поддерживает несколько методов кэширования, от простого файлового до выделенных memcache-серверов. О том как пользоваться кэшированием в своих приложениях я напишу в отдельной заметке. Здесь же краткий совет — не забывайте очищать кэш!
Читать дальше “Не забывайте очищать кэш!”
Теги: cakephp, кеширование, ошибка
Дополнительную гибкость системе маршрутов придают специальные элементы. Эти элементы вы можете определять сами, с их помощью в URL-адресе отмечаются места, где будут находиться параметры, передаваемые в функции контроллера. При выполнении запроса, значения специальных элементов сохраняются в массиве $this->params. Обратите внимание на отличие специальных элементов маршрута от именованных: именованные (/controller/action/name:value) передаются в массиве $this->passedArgs.
При создании специального элемента для него надо обязательно указать регулярное выражение — с его помощью CakePHP будет проверять правильность URL-адреса.
Читать дальше “Работаем с маршрутами в CakePHP (часть 3)”
Теги: cakephp, маршрут, пример, регулярное выражение
Я уже писал заметку для новичков в CakePHP, но понимания отличий работы платформы (framework) от обычного движка у неофитов все равно не хватает. Поэтому я решил написать несколько небольших заметок именно по особенностям и отличиям движков от фреймворка.
Читать дальше “Эссе о движках и фреймворках”
Теги: cakephp, php, движок
Во многих приложениях используются связи типа многие-ко-многим - HasAndBelongsToMany или HABTM в терминологии CakePHP. Они нужны для создания меток к записям в блоге, привязки атрибутов к товарам в интернет магазине, пользователей к пользователям в социальных сетях и т.д.
Для создания связи HABTM в CakePHP используется вспомогательная таблица, в которой хранятся два идентификатора связываемых данных. Например, если нам надо связать таблицы posts и tags, то вспомогательная таблица будет иметь вид:
Читать дальше “Добавление и удаление ассоциаций между записями”
Теги: cakephp, habtm, ассоциация, модель, пример, связь
В CakePHP есть собственные компоненты для аутентификации и авторизации, но не многие начинающие программисты ими пользуются, потому что эти компоненты довольно сложные. А формы-то делать надо, иначе как авторизовать пользователя в админку?
Сегодня мне показали еще один пример такой формы. Для простоты объяснения сути заметки, я приведу простой html-код формы:
Читать дальше “Ошибки в формах входа — ввод логина и пароля”
Теги: cakephp, ошибка, пример, форма
В CakePHP для определения путей к файлам используется сложная комбинация обработчиков — маршрутов. Плюс mod_rewrite вносит свою лепту. Из-за всего этого иногда бывает сложно определить правильный путь к статичному файлу, например, сохраненной картинке. Сегодня утром разбирался с этой проблемой.
Читать дальше “Проблемы с путями к статичным файлам в CakePHP”
Теги: cakephp, Маршруты
В одном из проектов нашей студии, нам понадобилось выводить случайные изображения (типа баннеров) в различных местах нескольких шаблонов. Все шаблоны относились к разным контроллерам, в каждом шаблоне к баннеру могли применяться различные css-классы для правильного размещения. Естественно, хотелось придумать универсальное решение.
Логично, чтобы все баннеры хранились в одной таблице — тогда для них проще разработать админку, да и удобнее когда они все управляются из одного места.
Какие поля должны быть в этой таблице?
Читать дальше “Вывод случайного баннера на CakePHP”
Теги: cakephp, баннер, Шаблоны
Во многих веб-приложениях загрузка файла — необходимая и достаточно сложная задача. На эту тему есть даже специальная статья в руководстве по языку PHP. Вообще, эта тема зависит не только от возможностей платформы, но и от настроек веб-сервера. Перед началом работы с файлами, удостоверьтесь что на вашем сервере правильные значения директив php.ini, отвечающих за загрузку файлов (file_uploads, upload_max_filesize, upload_tmp_dir, post_max_size и max_input_time).
В CakePHP загрузить файл совсем не сложно. Предположим, что все файлы мы загружаем в контроллер PostsController при создании записи (в функцию admin_add).
Читать дальше “Загрузка файла на CakePHP”
Теги: cakephp, Формы
В простых приложениях можно обойтись маршрутами по-умолчанию, но в более-менее больших — уже приходится писать свои маршруты — для доступа к панели администрирования, для упрощения адресов часто используемых страниц и т.д. Например, в приложении-блоге логично вместо http://example.com/posts/latest для отображения списка последних постов использовать ссылку http://example.com/latest — так короче и проще запомнить.
Собственные маршруты записываются в файл /app/config/routes.php с использованием метода Router:connect().
Читать дальше “Работаем с маршрутами в CakePHP (часть 2)”
Теги: cakephp, Маршруты
Под маршрутизацией в CakePHP понимается привязка определенных функций контроллера к URL-адресам страниц сайта. Это необходимо для того, чтобы адреса страниц были короткими, простыми и понятными. Такие адреса легко запоминаются и хорошо индексируются поисковиками. Все методы, связанные с маршрутизацией, находятся в классе Router, большинство из этих методов — статические. В версии CakePHP 1.2 весь класс Router был полностью переработан.
Читать дальше “Работаем с маршрутами в CakePHP (часть 1)”
Теги: cakephp, Маршруты