Сен 30 2008

Не забывайте очищать кэш!

Раздел: Веб-разработкаМета @ 20:48

Кэширование — крайне полезная вещь. Кэш значительно ускоряет работу веб-приложений, ведь серверу не приходится полностью выполнять все скрипты и запросы к базе данных, а можно взять часть уже подготовленных данных.

CakePHP поддерживает несколько методов кэширования, от простого файлового до выделенных memcache-серверов. О том как пользоваться кэшированием в своих приложениях я напишу в отдельной заметке. Здесь же краткий совет — не забывайте очищать кэш!

Читать дальше “Не забывайте очищать кэш!”

Теги: , ,


Сен 29 2008

Работаем с маршрутами в CakePHP (часть 3)

Раздел: МаршрутыМета @ 21:00

Дополнительную гибкость системе маршрутов придают специальные элементы. Эти элементы вы можете определять сами, с их помощью в URL-адресе отмечаются места, где будут находиться параметры, передаваемые в функции контроллера. При выполнении запроса, значения специальных элементов сохраняются в массиве $this->params. Обратите внимание на отличие специальных элементов маршрута от именованных: именованные (/controller/action/name:value) передаются в массиве $this->passedArgs.

При создании специального элемента для него надо обязательно указать регулярное выражение — с его помощью CakePHP будет проверять правильность URL-адреса.

Читать дальше “Работаем с маршрутами в CakePHP (часть 3)”

Теги: , , ,


Сен 28 2008

Эссе о движках и фреймворках

Раздел: ВсякоеМета @ 21:13

Я уже писал заметку для новичков в CakePHP, но понимания отличий работы платформы (framework) от обычного движка у неофитов все равно не хватает. Поэтому я решил написать несколько небольших заметок именно по особенностям и отличиям движков от фреймворка.

Читать дальше “Эссе о движках и фреймворках”

Теги: , ,


Сен 27 2008

Добавление и удаление ассоциаций между записями

Раздел: МоделиМета @ 21:53

Во многих приложениях используются связи типа многие-ко-многим - HasAndBelongsToMany или HABTM в терминологии CakePHP. Они нужны для создания меток к записям в блоге, привязки атрибутов к товарам в интернет магазине, пользователей к пользователям в социальных сетях и т.д.

Для создания связи HABTM в CakePHP используется вспомогательная таблица, в которой хранятся два идентификатора связываемых данных. Например, если нам надо связать таблицы posts и tags, то вспомогательная таблица будет иметь вид:

Читать дальше “Добавление и удаление ассоциаций между записями”

Теги: , , , , ,


Сен 26 2008

Ошибки в формах входа — ввод логина и пароля

Раздел: БезопасностьМета @ 21:43

В CakePHP есть собственные компоненты для аутентификации и авторизации, но не многие начинающие программисты ими пользуются, потому что эти компоненты довольно сложные. А формы-то делать надо, иначе как авторизовать пользователя в админку?

Сегодня мне показали еще один пример такой формы. Для простоты объяснения сути заметки, я приведу простой html-код формы:

Читать дальше “Ошибки в формах входа — ввод логина и пароля”

Теги: , , ,


Сен 24 2008

Проблемы с путями к статичным файлам в CakePHP

Раздел: МаршрутыМета @ 23:25

В CakePHP для определения путей к файлам используется сложная комбинация обработчиков — маршрутов. Плюс mod_rewrite вносит свою лепту. Из-за всего этого иногда бывает сложно определить правильный путь к статичному файлу, например, сохраненной картинке. Сегодня утром разбирался с этой проблемой.

Читать дальше “Проблемы с путями к статичным файлам в CakePHP”

Теги: ,


Сен 23 2008

Вывод случайного баннера на CakePHP

Раздел: Веб-разработкаМета @ 23:28

В одном из проектов нашей студии, нам понадобилось выводить случайные изображения (типа баннеров) в различных местах нескольких шаблонов. Все шаблоны относились к разным контроллерам, в каждом шаблоне к баннеру могли применяться различные css-классы для правильного размещения. Естественно, хотелось придумать универсальное решение.

Логично, чтобы все баннеры хранились в одной таблице — тогда для них проще разработать админку, да и удобнее когда они все управляются из одного места.

Какие поля должны быть в этой таблице?

Читать дальше “Вывод случайного баннера на CakePHP”

Теги: , ,


Сен 22 2008

Загрузка файла на CakePHP

Раздел: ФормыМета @ 23:17

Во многих веб-приложениях загрузка файла — необходимая и достаточно сложная задача. На эту тему есть даже специальная статья в руководстве по языку PHP. Вообще, эта тема зависит не только от возможностей платформы, но и от настроек веб-сервера. Перед началом работы с файлами, удостоверьтесь что на вашем сервере правильные значения директив php.ini, отвечающих за загрузку файлов (file_uploads, upload_max_filesize, upload_tmp_dir, post_max_size и max_input_time).

В CakePHP загрузить файл совсем не сложно. Предположим, что все файлы мы загружаем в контроллер PostsController при создании записи (в функцию admin_add).

Читать дальше “Загрузка файла на CakePHP”

Теги: ,


Сен 20 2008

Работаем с маршрутами в CakePHP (часть 2)

Раздел: МаршрутыМета @ 23:32

В простых приложениях можно обойтись маршрутами по-умолчанию, но в более-менее больших — уже приходится писать свои маршруты — для доступа к панели администрирования, для упрощения адресов часто используемых страниц и т.д. Например, в приложении-блоге логично вместо http://example.com/posts/latest для отображения списка последних постов использовать ссылку http://example.com/latest — так короче и проще запомнить.

Собственные маршруты записываются в файл /app/config/routes.php с использованием метода Router:connect().

Читать дальше “Работаем с маршрутами в CakePHP (часть 2)”

Теги: ,


Сен 19 2008

Работаем с маршрутами в CakePHP (часть 1)

Раздел: МаршрутыМета @ 23:55

Под маршрутизацией в CakePHP понимается привязка определенных функций контроллера к URL-адресам страниц сайта. Это необходимо для того, чтобы адреса страниц были короткими, простыми и понятными. Такие адреса легко запоминаются и хорошо индексируются поисковиками. Все методы, связанные с маршрутизацией, находятся в классе Router, большинство из этих методов — статические. В версии CakePHP 1.2 весь класс Router был полностью переработан.

Читать дальше “Работаем с маршрутами в CakePHP (часть 1)”

Теги: ,


« Предыдущая страницаСледующая страница »