Это несколько маленьких записей, чтобы не забыть как и чего.
Должно быть только одно место, откуда бандлы будут брать сущности.
Будет ли это отдельные бандл для сущностей
или же один бандл будет юзать сущности другого.
Сущности обязательно из 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...
Комментариев нет:
Отправить комментарий