Symfony без слэша на хвосте

Часто-часто задаваемый вопрос в канале по symfony:

  • как избавиться от слэша на конце URL
  • почему DoctrineRouteCollection не принимает последний слэш
  • и т.д. в том же духе

Так вот вам просто сниппет в помощь:

#to avoid trailing slash problem
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

Научной ценности сниппет не представляет, но вопрос действительно часто спрашиваемый ) Так что “ищите и обрящете” ))

Have fun!

i18n данные в mysql

Полезный пост от Жени Бабина: http://discover-symfony.blogspot.com/2010/05/symfony-i18n-over-mysql.html.

Рассказывается о том как XLIFF переводы (текст в шаблонах) хранить в MySQL. По образу и подобию можно воспользоваться gettext или SQLite. В принципе можно и свой адаптер написать.

Спасибо, Женя )

Unescape для User flash message в symfony

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

Рабочий вариант у меня получился таким:

<?php echo sfOutputEscaper::unescape( $sf_user->getFlash('notice') ) ?>

Используется такой вариант для вывода HTML кода в сообщении (например, чтобы быстро перейти куда-либо прямо из flash-сообщения).

Магические числа и таблицы-справочники в Doctrine/Propel

Кросспост моего хабратопика.

Коль скоро у вас в проекте используется база данных, то вам рано или поздно потребуются справочные таблицы. Такие таблицы я бы условно разбил на три категории:

  1. Небольшие справочники, до 10, реже 20 записей. Например – таблица статусов чего-нибудь (active|inactive|deleted как минимум).
  2. Средние справочники – от 20 до нескольких сотен записей. Например, таблица типов или категорий чего-либо.
  3. Большие справочники – от нескольких сотен до сотен тысяч записей. Например список городов и улиц России.

Справочники, как правило, заполняются разово при создании и крайне редко пополняются. Но тем не менее, пополнение возможно и наиболее вероятно для третьего типа, менее для второго и редко для первого.

Собственно зачем я это пишу:

Continue reading

Вывод неэкранированных (unescaped) данных в symfony 1.3/1.4

Коль скоро в symfony 1.3/1.4 по умолчанию включено экранирование (escaping) всех выводимых данных, вам рано или поздно понадобится вывести что-либо в неэкранированном виде. Судя по постоянным вопросам в коммьюнити, не все могут найти документацию по этому вопросу, поэтому публикую эту небольшую заметку.

Continue reading