У меня есть сложная схема базы данных в моем приложении Symfony2, с множеством сущностей, связанных друг с другом.
Следовательно, мои формы также сложны: у меня может быть много связанных форм; например, «Кино» может иметь адрес, но также может быть связан с несколькими «фильмами» (с кнопкой для добавления нового фильма).
С этим очень трудно справиться, используя базовые типы форм Symfony2; Я предпочитаю создавать свою форму вручную в виде веточки ; используя кучу Javascript.
Но я не знаю, как справиться с отправкой формы?
createFormBuilder()
в моем контроллере, чтобы определить основные поля формы и проверить их с помощью handleRequest()
метод?Спасибо 🙂
Я не очень хорошо понимаю проблему …
Вы можете играть с несколькими вложенными формами и вся структура (HTML + JS) находится в документе:
http://symfony.com/doc/current/cookbook/form/form_collections.html
Официальный документ тоже дает jsfiddle: http://jsfiddle.net/847Kf/4/
Просто выписка для проверки правильности ответа:
function addTagForm($collectionHolder, $newLinkLi) {
// Get the data-prototype explained earlier
var prototype = $collectionHolder.data('prototype');
// get the new index
var index = $collectionHolder.data('index');
// Replace '$$name$$' in the prototype's HTML to
// instead be a number based on how many items we have
var newForm = prototype.replace(/__name__/g, index);
// increase the index with one for the next item
$collectionHolder.data('index', index + 1);
// Display the form in the page in an li, before the "Add a tag" link li
var $newFormLi = $('<li></li>').append(newForm);
// also add a remove button, just for this example
$newFormLi.append('<a href="#" class="remove-tag">x</a>');
$newLinkLi.before($newFormLi);
// handle the removal, just for this example
$('.remove-tag').click(function(e) {
e.preventDefault();
$(this).parent().remove();
return false;
});
}
Вы можете настроить рендеринг, или / и создаем собственную тему:
http://symfony.com/doc/current/cookbook/form/form_customization.html
Вы можете обрабатывать проверку формы :
http://symfony.com/doc/current/book/validation.html
И если вы хорошо разбираетесь в эргономике, вы можете создать красивую форму, разделенную на несколько вкладок или любой другой мыслимый дизайн …
Вы всегда можете создать свой собственный простой класс форм, который реализует те же методы, что и Symfony2:
И так далее.