我有order
一个client
实体.
我想知道是否可以使用实际的Symfony2表单系统创建一个订单表单,该表单允许:
collection
和entity
表单类型)collection
如果不在下拉列表中,则动态创建新客户端(类型的默认方式).我已经看到了通过在同一页面中创建多个表单来实现它的一些方法,但这不是我想要实现它的方式.
有没有更好的方法来做到这一点?
我遇到了类似的问题,可能导致您的解决方案:
我有一个类别和项目关系(多对一),我想要选择现有项目或创建一个新项目.
在我的Form类中:
$builder->add('item', 'entity', array(
'label' => 'Item',
'class' => 'ExampleItemBundle:Item',
));
$builder->add('itemNew', new EmbedItemForm(), array(
'required' => FALSE,
'mapped' => FALSE,
'property_path' => 'item',
));
$builder->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event) {
$data = $event->getData();
$form = $event->getForm();
if (!empty($data['itemNew']['name'])) {
$form->remove('item');
$form->add('itemNew', new EmbedItemForm(), array(
'required' => TRUE,
'mapped' => TRUE,
'property_path' => 'item',
));
}
});
Run Code Online (Sandbox Code Playgroud)
表单collection
类型允许使用allow_add
和allow_delete
属性动态添加和删除。
通过以下两个链接了解更多信息:
如果您不喜欢在同一页面上获得补充表单,您可以将它们集成在对话框中...但是您肯定需要一个表单来创建新项目...