2016-06-07 4 views
0

У меня проблемы найти наилучший подход к реализации формы Symfony для следующего сценария:Symfony форма с заполняемыми данными

Я группа лиц хранить каталог контрольных списков (Checklists-> Groups- > Tasks-> CorrectiveActions), эти контрольные списки могут быть реализованы сущностными станциями.

В этой реализации станция будет давать оценку каждой задаче, если оценка ниже 5, для этой задачи будет отображаться список корректирующих действий, каждое корректирующее действие будет иметь флажок, поэтому станция может выбрать его реализацию ...

Я закодирован в сыром HTML, как форма будет выглядеть следующим образом:

How the form looks like

Моя проблема, я не знаю, как перенести это в формах типа Symfony.

Я не знаю, как загрузить список неотображенных полей (групп, задачи и корректирующие действия), а затем создать отношения с отображенных полей (каждая задача выбрана оценка и каждая задача selecteds корректирующие действия)

Очевидно Я не прошу код, который я могу скопировать и вставить, мне нужны идеи о том, как реализовать эту или какую-то документацию, которая может помочь мне в этом.

Я работаю с Symfony 3.1.0 и следующих лиц:

Checklist-> ChecklistGroup-> ChecklistGroupTask-> ChecklistGroupTaskCorrective VVV StationChecklist -> StationChecklistTask -> StationCheckListTaskCorrectives

не создавали StationChecklistGroup, поскольку я не собираюсь добавлять какие-либо поля в группы, или, может быть, я должен добавить его в любом случае?

EDIT В случае, если это помогает здесь, моя структура db, возможно, я смогу реализовать ее лучше (некоторые поля отсутствуют). Это испанское, но я думаю, что вы можете понять это, punto_venta моей станции объект: DB Mapping

ответ

0

Ваш вопрос довольно расплывчатый на некоторые моменты, так что я постараюсь помочь вам стольких, сколько я могу:

  • Чтобы обрабатывать коллекции элементов формы (например, Группы ваших задач), вы должны использовать CollectionType.

  • Незаменимые формы, преобразующие данные в реальные объекты, являются необоснованным использованием компонента Form, поэтому попробуйте иметь FormTypes с data_classes.

  • IMO у вас должен быть один FormType для каждого из ваших сущностей, который его отображает. Поэтому, когда пользователь создает контрольный список, создайте ChecklistFormType, который будет иметь поле groups (CollectionType of GroupFormTypes). Затем создайте GroupFormType с tasks полем (CollectionType из CorrectiveActionsFormType) и т.д.

  • После этого, задача будет сделать свой код для повторного использования для Stations но вопрос немного модели здесь: StationChecklists являются действительно отличается от ChecklistsStationChecklistTasks чем ChecklistGroupTasks? Возможно, вы могли бы использовать интерфейсы или суперклассы, чтобы лучше сопоставлять эти подобные объекты, а затем иметь FormType, сопоставляя эти интерфейсы/суперклассы, а не фактические дочерние сущности.

+0

Да, я застрял в этом вызове. Я уже могу создать контрольные списки, и я сделал это, как вы предложили с помощью FormType для каждого объекта. Мой объект StationChecklist - это в основном таблица, объединенная с контрольным списком сущностей и сущностью Station, добавляющая некоторые поля, такие как «DateLimit» и «ImplementationDate». Затем StationChecklistTasks будет содержать оценку каждой задачи, и он соединен с StationChecklist и ChecklistTask ... И, наконец, StationChecklistTaskCorrective только добавляет логическое поле, чтобы узнать, какие корректирующие действия были выполнены. – Kynethix

+0

Как это работает, когда пользователь создает StationChecklist? Является ли форма той же, что и для контрольного списка, но с первой станцией для выбора? – Terenoth

+0

Сначала пользователь выбирает, в какой станции хочет работать и какой контрольный список хочет реализовать, тогда я отправляю как выбранный идентификатор контрольного списка, так и выбранный идентификатор станции на новый контроллер, там я могу загрузить объекты с помощью найденных идентификаторов. – Kynethix