Кэширование — крайне полезная вещь. Кэш значительно ускоряет работу веб-приложений, ведь серверу не приходится полностью выполнять все скрипты и запросы к базе данных, а можно взять часть уже подготовленных данных.
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, ошибка, пример, форма
Я конечно понимаю что язык PHP простой и в нем многое допустимо. Понимаю, что на свете куча новичков, которые еще только учатся программировать. Вполне осознаю также что я и сам не спец. Но всегда когда я встречаю в коде ТАКОЕ меня коробит. А, блин, попадается с пугающей регулярностью.
Цитата из кода самописной панели администрирования сайта одного очень крупного завода Московской области:
Читать дальше “Горе-программисты или сказ про перевод номера месяца в название”
Теги: php, оптимизация, ошибка, юмор
В 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, Формы
Уметь быстро разбираться в чужом коде — страшно полезное умение. Сегодня звонил один из клиентов (пользуется у нас только хостингом). Говорит — так и так, закачал сайт, установил, настроил, потом поменял тему оформления у себя в движке — и теперь не могу зайти, все время выдает 404 ошибку.
Полез смотреть в чем дело.
Движок оказался — e107, я его честно говоря не люблю. По структуре ничего, но оформление — никакое. В хорошем движке как в человеке — все должно быть прекрасно, и код, и внешний вид админки, и дизайн сайта по-умолчанию. Все это говорит о внимательности авторов движка к деталям и серьезности разработки.
Читать дальше “Проблемы с SSL и движком e107″
Теги: php, движок, ошибка