01.08.2012

Symfony2 + Doctrine. Маленькие заметки.

Это несколько маленьких записей, чтобы не забыть как и чего.
Должно быть только одно место, откуда бандлы будут брать сущности. 
Будет ли это отдельные бандл для сущностей
или же один бандл будет юзать сущности другого. 
Сущности обязательно из 1 места.
Базовый контроллер:
$em
$user
$logger
$session
$request
Если видим, что кусок кода много где повторяется - выносим в шаблон.
{% include 'Bundle:Controller:template' %}
Если видим, что кусок кода много где повторяется,
но это программируемый код - при необходимости выносим в шаблон и 
рендерим метод в контроллера
{% render 'Bundle:Controller:method' with {'varname':varvalue} %}
Для работы с файлами юзаем FileSystem и File
getOneOrNullResult спасет от ошибок при getSingleResult
Очень желательно под рукой иметь генератор либо
 уже сгенерированный набор данных для ваших сущностей. 
Причем не в объеме 10 записей, а хотя бы 100. 
Так вы сможете более эффективно тестировать ваше приложение.
Может потребоваться сделать у сущности привязанной к другой сущности
 сделать все поля protected. 
Самый простой способ - сделать у всех сущностей все поля protected,
 возможно потребуется сделать private токльо для id.
Пагинатор - базовый. От него потомки.

{% for var in vars %}
 {% if loop.first == true or (loop.index - 1) is divisibleby(3) %}
  
 {% endif %} 
  
 {% if loop.last == true or loop.index is divisibleby(3) %}
  
 {% endif %}   
 
{% endfor %}
{% if pages > 1 %} {% endif %}
ОЧЕНЬ ВАЖНО!
config.yml
framework:
    #esi:             ~
    translator:      { fallback: %locale% }

Создаем файл:
messages.en.yml

Все переводы делаем так somecode.somemorecode.some_translation_code
Перевод ищется по ключу. Удобнее в 100500 раз.
АвтоЛогин
  $token = new UsernamePasswordToken($acc, null, 'user', $acc->getRoles());
  $this->get('security.context')->setToken($token);
To be continued...

17.01.2012

SOPA L'Oreal

Какое отношение имеет кампания, занимающаяся парфюмерией и косметикой к Интернет - пиратству в принципе? Клац