Да, в описанном случае "форма" тоже не нужна. Нужно просто добавить список чекбоксов и не забыть про csrf токен. В указанном мной примере форма только из-за проверки токена была добавлена, что не является одной из ее главных функций.
Алексей Скобкин: Да, но если очень нужно, то можно вывести маршруты при помощи grep:
grep '@Route' -R src/AppBundle/Controller
Как раз из-за необходимости окинуть взгядом структуру БД я, например, использую yaml для описания метаданных сущностей Doctrine. Много раз я видел гигантские конструкции из аннотаций для маппинга + аннотации с правилами валидации + еще аннотации для сериализации и т.д.
Если нужно понять "куда придем", можно использовать команду debug:router. У меня все наоборот - для сущностей yaml, для маршрутов - аннотации, хотя еще раньше для всего использовал только yaml.
cold147: Вы правы, посмотрел апи контейнера - там ничего полезного нет. Кирилл Несмеянов: По видимому, вам придется на самом деле отказаться от этой фичи.
Тогда вам придется сделать расширение или сервис который при помощи рефлексии и api контейнера сделает все как в Laravel. Из коробки в симфони этого нет.
Нет, это не книга с драконом. Книга Вирта более легкая для чтения, без сложного математического аппарата. Но в ней есть много полезной информации.
Вот она www.ozon.ru/context/detail/id/6146662
Ее легко найти в электронном варианте.
Александр Евгеньевич: может дело в cascade_validation? По умолчанию оно стоит false, т.е. не проверяет наличие доп, полей в дочерних формах. Поэтому в доках и не указывают allow_extra_fields
Сергей Протько: и все таки я не могу согласиться что авторизация является частью бизнес-логики, как и проверка наличия в БД объекта с определенным идентификатором. Вероятно мы по-разному понимаем этот термин.
Александр Евгеньевич: Я посмотрел исходники CollectionType, оказалось что allow_add и allow_extra_fields никак не связаны. Извините, что ввел в заблуждение.
Тогда, это на самом деле странная ситуация, т.к. в документации не сказано про то что нужно использовать allow_extra_fields (хотя, это и логично, если используется валидация) для коллекций.
Вы можете убрать "allow_extra_fields", эта опция автоматически выставляется в true, если вы укажете "allow_add" => true. Ошибка и была в том, что allow_add не был указан.
Сергей Протько: я имел ввиду что исходя из вопроса, человеку нужно просто сделать три проверки: есть ли корзина с таким id, есть ли товар с таким id, может ли пользователь его менять. Это делается легко через аннотации. Исполльзование событий (что в моем случае с kernel.request, что в вашем с kernel.exception) - это overkill/overheadи/излишне
Александр Евгеньевич: Будет лучше если методы вашего сервиса будут возвращать true/false, а не бросать исключения. Эти методы вызывать в контроллерах, и уже там бросать соответствующие http-исключения.
Также можно создать слушатель события kernel.request. Узнать текущий маршрут и его параметры можно через аттрибуты _route и _route_params экземпляра запроса: $request->attributes->get ('_route_params'). Далее осуществить все проверки, используя методы указанного выше сервиса и бросить соответствующее http-исключение или установить Response.
Конвертировать исключения при помощи kernel.exception, в данном случае мне кажется излишним.