Перевод записи Auto-loading vendor files (or any other file) с блога Cakebaker’a.
Если вы используете внешние классы, не относящиеся к CakePHP (т.е. не являющиеся готовыми компонентами, хелперами, и т.д., например - PhpMailer или классы Pear), вам приходится импортировать эти классы вручную с помощью вызова App::import(’Vendor’, ‘ClassName’). Этот вызов работает если ваши классы находятся в папке ‘vendors’. То есть в каждом контроллере, или модели, или любом другом месте где вы хотите использовать внешний класс, вам приходится его сначала импортировать. Это не очень удобно.
Читать дальше “Автоматическая загрузка внешних библиотек”
Теги: cakephp, php, совет
Задача из области юзабилити — как добавить товар в корзину, и при этом оставить человека на той же странице, причем желательно даже без перезагрузки оной? Раньше было проблемой, последние пару лет — везде делается на ajax. За примерами реализации далеко ходить не надо — тот же Ozon.ru вовсю пользуется ajax’ом. Вот в своих проектах нам захотелось сделать современную корзину. Оказалось, на CakePHP это совсем не сложно.
Наверное, стоит описать процесс подробно, чтобы в следующих постах просто ссылаться на этот за предварительными настройками.
Читать дальше “Добавление товаров в корзину на AJAX”
Теги: ajax, cakephp
Как показала практика, один из самых сложных вопросов это не как написать сайт, а какие именно возможности в него закладывать, как его спроектировать чтобы он получился успешный и окупаемый. Даже программисты постоянно ленятся и пытаются писать ровно то что им скажешь не включая мозги, работают «в режиме кодера». Так делать не следует — ни развития, ни качественного проекта таким способом не создать.
Например, приходит заказчик, говорит — хочу сделать сайт для своего магазина, чтобы ко мне больше народу приезжало, и даже через интернет могли письмо скинуть и оптом заказать. Торгует его магазин, ну скажем всякими красками, лаками и прочей химией. Заказчик вполне определенно высказал свои потребности (что кстати редко бывает).
Читать дальше “Проектирование веб-сайтов”
Теги: планирование, работа
Кэширование — крайне полезная вещь. Кэш значительно ускоряет работу веб-приложений, ведь серверу не приходится полностью выполнять все скрипты и запросы к базе данных, а можно взять часть уже подготовленных данных.
CakePHP поддерживает несколько методов кэширования, от простого файлового до выделенных memcache-серверов. О том как пользоваться кэшированием в своих приложениях я напишу в отдельной заметке. Здесь же краткий совет — не забывайте очищать кэш!
Читать дальше “Не забывайте очищать кэш!”
Теги: cakephp, кеширование, ошибка
В одном из проектов нашей студии, нам понадобилось выводить случайные изображения (типа баннеров) в различных местах нескольких шаблонов. Все шаблоны относились к разным контроллерам, в каждом шаблоне к баннеру могли применяться различные css-классы для правильного размещения. Естественно, хотелось придумать универсальное решение.
Логично, чтобы все баннеры хранились в одной таблице — тогда для них проще разработать админку, да и удобнее когда они все управляются из одного места.
Какие поля должны быть в этой таблице?
Читать дальше “Вывод случайного баннера на CakePHP”
Теги: cakephp, баннер, Шаблоны
Просматривая html-код страничек, генерируемых CakePHP, вы наверное замечали в конце страницы комментарий вида . Это время, затраченное на создание страницы. Такой комментарий автоматически добавляется к каждой страничке, если уровень отладки отличен от нуля. Уровень отладки переключается в файле /app/config/core.php.
В общем-то этот комментарий ничего криминального в себе не несет. Но только если вы создаете обычные html-странички. Если же в ответ на запрос пользователя должны выдаваться данные какого-нибудь другого формата, например JSON — этот комментарий будет мешать.
Как его отключить?
Читать дальше “Как убрать комментарий с временем создания страницы?”
Теги: cakephp, отладка
Вольный перевод заметки Felix Geisendörfer Dessert #8 - Render custom errors.
Наверное вы уже замечали папку /app/views/errors/ и знаете, что можете использовать ее для переопределения стандартных шаблонов для сообщений об ошибках из папки /cake/libs/view/errors/. Вот их полный список:
Читать дальше “Сообщения об ошибках в CakePHP”
Теги: cakephp, ошибка, шаблон
Соглашения (conventions) — это то, что принято называть «автомагией», когда достаточно выполнить одно-два простых условия, чтобы Кейк автоматически выполнил целый ряд действий, существенно ускоряющих разработку. Авторы CakePHP являются большими фанатами соглашений и стараются их использовать по-максимуму, вместо привычных опций конфигурации. Конечно, в самом начале работы с Кейком вам придется их изучать, но тут главное вникнуть в смысл — соглашения используются очень логично. К тому же, все разработчики на CakePHP уже изучившие правила работы с соглашениями, смогут быстро разобраться в вашем исходном коде, а вы — в их.
Соглашения CakePHP включают в себя лучшую практику веб-разработки, наработанную годами. Хотя создатели платформы и рекомендуют им следовать, но это вовсе не требование, а совет. Вы всегда можете отказаться от их использования.
Читать дальше “Соглашения в CakePHP”
Теги: cakephp
Вольный перевод статьи Tidy Output Filtering с официального сайта CakePHP (http://bakery.cakephp.org/articles/view/tidy-output-filtering).
В CakePHP можно довольно просто отфильтровать весь выводимый контент через Tidy, для того чтобы удостовериться в его валидности (соответствию стандартам) и доступности посковикам. Использование Tidy позволяет не заботиться о тщательной разметке шаблонов и контента, что особенно актуально когда контент создается самими пользователями сайта или неопытными сотрудниками заказчика. Конечно, дополнительный фильтр влияет на производительность, но чаще всего это очень удобное и полезное решение.
Читать дальше “Фильтрация разметки страниц с использованием Tidy”
Теги: cakephp, php, валидация
Решил собрать коллекцию самых часто задаваемых вопросов, из тех что возникают у начинающих программистов на CakePHP. Буду публиковать по частям.
Читать дальше “5 часто задаваемых вопросов по CakePHP (часть первая)”
Теги: cakephp