@magary4

Создание форм пользователем?

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

в голове мысть сделать 3 таблицы

form
- id
- name
- url

form_field
- form_id
- name
- type (textbox, checkbox, select)

form_value
- useremail
- username
- field_id
- value

отобразить это дело не составит труда
а вот как обрабатывать сабмит? надо сделать какие-то классы Form & Entity чтоб можно было обработать сабмит такой формы с динамическим набором полей
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
Из часто требующихся не хватает password (password_again), multi-checkbox, radio и date.
А в чем проблема обработать сабмит, если первым же скрытым полем в форме будет ее идентификатор?
Ответ написан
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
1. Нужно создать модель, в конструктор которой должны передаваться все данные, на основании которых можно построить форму
1.1 У модели сделать магические методы, через которые как раз и можно будет обработать кастомное количество полей
2. Нужно создать класс формы, которая будет на основании этой модели генерировать форму:
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $addFields = function (FormInterface $form, FormModel $model){
        foreach ($model->getFields() as $field) {
            $form->add($field->getName(), $field->getType(), $field->getOptions());
        }
    };

    $builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event) use ($addFields) {
        $data = $event->getData();
        $form = $event->getForm();

        $addFields($form, $data);
    });
}

3. После сабмита этой формы, модель возвращает Entity, которую уже можно будет сохранить в БД.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы