2011-08-18 2 views
1

Потребность: Возможность динамически создавать формыSymfony 1.4 Форма Creater

Структура (простая идея не реальная структура)

Admin: Form Assignment, where you create what field you want your new Form to have 
FrontEnd: Where the New form will be implemented (this is the root of this question) 
FronEnd Storage: When the New form is filled out the data points are written to a set of tables 

Идея достаточно проста, Входят в Admin, выберите поля, FieldType и Наклейки, которые вы хотите

IE

Field Name:*Enter a specific field name, like f_name or email 
FieldType: [Text, TextArea, Password, Radio, DatePicker, CheckBox, Select, etc] 
Label: What to display on the resulting form, f_name = First Name, etc 

Тогда я ударил страницу на интерфейсной где Новая форма генерируется, я заполнить ее и вуаля данные хранятся в таблицах FrontEnd хранения.

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

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

Я чувствую это это «неправильный» способ сделать это, я нашел плагин «spyFormBuilderInterface2Plugin», который является старым и строит для продвижения не доктрины, но это основная идея того, что мне нужно. Итак, как вы это сделаете?

Пожалуйста, обратите внимание, я не ищу, чтобы динамически добавлять формы к текущей форме, я уже могу сделать это, и это именно то, что реализуется в моем администратора раздела, мне нужно взять данные создать совершенно новый вид программно

ответ

1

Я создал что-то вроде описанного, как вы сказали.

У меня есть модель FormDefinition, которая определяет форму и имеет коллекцию FormField s. Каждое поле формы имеет widget_class, widget_options, validator_class и validator_options.

У меня есть пользовательский myForm, которому нужен FormDefinition в его конструкторе. В setup() из myForm я просматриваю все поля, создавая виджеты и валидаторы.

Beacuse в нашем решении, нам нужно/захотелось сохранить все данные формы в отдельных таблицах. Мой myForm простирается от sfDoctrineForm, а на моем бэкенде есть логика, которая создает/обновляет (php) модель и определение базы данных, просто вызывая соответствующие методы Doctrine. Но вы также можете создать магазин EAV.

Смежные вопросы