Александр Евгеньевич: Будет лучше если методы вашего сервиса будут возвращать true/false, а не бросать исключения. Эти методы вызывать в контроллерах, и уже там бросать соответствующие http-исключения.
Также можно создать слушатель события kernel.request. Узнать текущий маршрут и его параметры можно через аттрибуты _route и _route_params экземпляра запроса: $request->attributes->get ('_route_params'). Далее осуществить все проверки, используя методы указанного выше сервиса и бросить соответствующее http-исключение или установить Response.
Конвертировать исключения при помощи kernel.exception, в данном случае мне кажется излишним.
shoomyst: А можно ссылку на документацию про ключи с подчеркиванием?
getName у FormType возвращает идентификатор типа, например choice. Симфони добавляет к нему _widget и рендерит блок choice_widget.
Нужен custom_widget, т.е. любой. Там html-разметка нужна, в label добавить span и еще ко- что. Заказчик в админке будет выбирать стиль выводящегося choice (entity).
На данный момент я сделал CustomEntityType который расширяет EntityType из DoctrineBundle с методом setName. getName теперь возвращает нужное мне значение и поле рендерится с использованием нужного мне виджета.
Но криво как-то все это.