在Symfony2中,可以使用CollectionType来处理表单中的集合字段,例如添加多个联系人或多个地址。要向CollectionType添加行,可以按照以下步骤进行操作:
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use AppBundle\Form\Type\ContactType;
// ...
$builder->add('contacts', CollectionType::class, [
'entry_type' => ContactType::class,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
]);
{{ form_start(form) }}
<div id="contacts">
{% for contactForm in form.contacts %}
{{ form_row(contactForm.name) }}
{{ form_row(contactForm.email) }}
{{ form_row(contactForm.phone) }}
{% endfor %}
</div>
<button type="button" class="add-contact">Add Contact</button>
{{ form_end(form) }}
<script>
var $contactsContainer = $('#contacts');
var $addContactButton = $('.add-contact');
$addContactButton.on('click', function() {
var prototype = $contactsContainer.data('prototype');
var index = $contactsContainer.data('index');
var newForm = prototype.replace(/__name__/g, index);
$contactsContainer.append(newForm);
$contactsContainer.data('index', index + 1);
});
</script>
在上面的代码中,我们使用了一个包含联系人字段的div容器,并在每次点击"Add Contact"按钮时,通过替换原型中的__name__
占位符来添加新的联系人行。
这样,当用户点击"Add Contact"按钮时,就会动态添加一个新的联系人行到表单中。
关于Symfony2表单和CollectionType的更多信息,可以参考Symfony官方文档:
请注意,以上答案中没有提及任何特定的云计算品牌商,如有需要,可以根据具体情况选择适合的云计算服务提供商。
领取专属 10元无门槛券
手把手带您无忧上云