Я использую Symfony 1.4 для создания проекта, и мне нужно создать динамические формы в зависимости от типа набора вопросов, поступающего из базы данных. Я использовал формы Symfony в остальной части моего проекта, но в этом случае использование форм symfony кажется жестким, поскольку мне нужна динамическая форма. может быть безопасным использовать обычные HTML-формы .. в проекте symfony или желательно использовать формы Symfony. поэтому вам нужна ваша помощь.Формы Symfony или обычные формы HTML
ответ
Вы можете использовать html-формы, но это будет обходить систему проверки формы Symfony.
Вы все еще можете создавать динамические формы, создавая и добавляя виджеты ввода в текущую форму или новую форму внутри действия. Затем вы можете повторить форму в шаблоне, и динамически сгенерированные поля также будут частью формы.
Если вы начинаете с MyForm.class.php в Lib/формы, убедитесь, что добавить:
$this->validatorSchema->setOption('allow_extra_fields', true);
В противном случае, вы автоматически получаете ошибки проверки. Если вы хотите добавить поля в форму в действии, вы могли бы сделать что-то вроде этого:
$this->form = new MyForm();
$widgetSchema = $this->form->getWidgetSchema();
$widgetSchema['add_field'] = new sfWidgetFormInputText();
Когда эха вашего вида: «add_field» входа будет добавлен к нему.
Я попробую это, потому что я хочу добавить элементы HTML во время выполнения и без потери системы проверки формы Symfony. –
Это поможет получить больше информации о том, что вы делаете, но вот один из способов, которыми формы могут быть динамическими в Symfony. Этот код создает виджеты и валидаторы для опроса динамически на основе «типа» вопрос:
class SurveyAnswerForm extends BaseSurveyAnswerForm
{
public function configure()
{
$question = $this->object->Question;
$method = sprintf('createWidgetAndValidatorFor%sInputType', $question->type);
$this->$method($question);
$this->getWidget('value')->setOption('label', $question->question);
$this->getValidator('value')->setOption('required', $question->required);
}
protected function createWidgetAndValidatorForTextFieldInputType(Question $question)
{
$this->setWidget('value', new sfWidgetFormInputText());
$this->setValidator('value', new sfValidatorString());
}
protected function createWidgetAndValidatorForTextAreaInputType(Question $question)
{
$this->setWidget('value', new wfWidgetFormTextareaAutosize());
$this->setValidator('value', new sfValidatorString());
}
//etc. for as many types as you require
}
Примечание: в то время как этот ответ код из одного из моих проектов, он находился под сильным влиянием this answer над на SymfonyExperts.
- 1. Данные формы формы Symfony NULL
- 2. Формы в symfony
- 3. Symfony динамические формы
- 4. Форма отправки формы Symfony
- 5. Поля скрытой формы Symfony
- 6. Передача переменной формы Symfony
- 7. Фильтрация входной формы формы в форме формы Symfony
- 8. Перегрузка формы в symfony
- 9. Symfony формы высокой памяти
- 10. Symfony встроенный контроллер формы
- 11. Symfony значения формы отсутствует
- 12. Проверка файла формы Symfony
- 13. Маршрутизация формы Symfony
- 14. Ошибка регистрации формы Symfony
- 15. Symfony, скрытое поле формы
- 16. неделю сборщика Symfony формы
- 17. Symfony FOSUserBundle переопределяет формы
- 18. Symfony формы недели сборщик
- 19. Ошибки манекена формы Symfony
- 20. Symfony формы с подчиненной
- 21. диапазона формы Symfony вход
- 22. Формы с Symfony 3
- 23. Symfony формы Вводят объект
- 24. Пользовательский тип формы symfony
- 25. Ошибка отображения формы Symfony
- 26. Подтверждение программной формы Symfony
- 27. Подтверждение условной формы Symfony
- 28. Symfony формы и add_empty
- 29. Symfony: получить объект формы
- 30. значение формы в Symfony
Не могли бы вы дать больше информации о том, что вы пытаетесь сделать? «Динамические» формы - как они динамичны? Что бы вы ни пытались сделать, Symfony почти наверняка это сделает. –
@jeremy, извините, я coudnt очень сильно объясняю .. динамическая форма, которую я имел в виду, была ... форма будет создана во время выполнения в зависимости от базы данных. Например, у нее будет n количество выбора ... и тип элементов (т.е. элементы HTML) будут меняться в зависимости от типа вопроса (если один выбор, тогда выберите элемент, если он установлен в несколько раз.) Я надеюсь, что это было ясно. –
ранее я использовал Classic PHP, чтобы сделать то же самое .. в то время Я создал эти формы набора вопросов с помощью PHP-кода ... и использовал javascript тоже .. –