вторник, 2 ноября 2010 г.

Отменяем кэширование CSS

Если вы часто (или хотя бы иногда!) меняете CSS-файлы фронтенда, то имеет смысл подумать над тем, чтобы не вводить в ступор пользователей, которые видят сайт в стилях, закэшированных их браузером. Иными словами, вы поменяли стили, а юзер думает "какого хрена у меня оно так выглядит?".

среда, 21 июля 2010 г.

Делаем "Направленный список чего-нибудь"

Заказчиком была поставлена следующая задача: сделать возможность создавать направленные списки (списки, в которых порядок следования элементов имеет значение), состоящие из произвольных объектов любых моделей проекта. Практическое применение: вывести в определенной последовательности 5 товаров, потом еще 10 товаров (в другой последовательности), затем 7 категорий товаров, и, наконец, 12 новостей (тоже в заранее заданной последовательности). Назовем этот список "рейтингом". Ниже представлена концепция с основными моментами реализации.

вторник, 13 июля 2010 г.

Критический баг в sfGuardPlugin

Ахтунг! Ахтунг! Метод генерации случайного ключа, используемый в sfDoctrineGuardPlugin не обеспечивает необходимый уровень случайности! Полюбуйтесь

среда, 7 июля 2010 г.

Грабли: таблицу удалили (переименовали), а она все равно создается

Если вы переименовали или удалили какую-то модель (таблицу) в доктрина-схеме, а при следующем doctrine:build эта таблица все равно создается, то надо почистить старые классы моделей (они не удаляются автоматически при изменении схемы):
symfony doctrine:clean-model-files

воскресенье, 4 июля 2010 г.

Подключаем CKEditor в Symfony

Ничего сложного в установке этого WYSIWYG-редактора нет, но тем не менее, пара небольших грабелек заботливо спрятана составителями документации.

среда, 9 июня 2010 г.

Как использовать партиал или компонент из другого application?

Иногда возникает задача использовать партиал или компонент из другого application. Самое простое (и, на мой взгляд, логичное) решение — сделать плагин, сделать модуль, и в него положить этот партиал или компонент. Включаем модуль в settings.yml:
enabled_modules: [....., SharedComponent]

и спокойно используем его так, как будто он объявлен в папке самого application'a.

P.S. О том, как делать ссылки из одного приложения в другое, можно почитать здесь.

пятница, 4 июня 2010 г.

Обрабатываем большую коллекцию по частям

Не секрет, что гидрация в объекты большого количества записей занимает много ресурсов (времени). Поэтому если вам надо вытащить Доктриной большое количество записей, и обработать их, то первый шаг к оптимизации - вытаскивать коллекцию не всю сразу, а кусочками. Примерно вот так