如何将具有m:n(多对多)关系的表单嵌入到另一个表单中?

时间:2010-03-20 16:56:44

标签: forms symfony1 doctrine relationship

我有一种处理m:n关系的基因处理形式。生成的表单会覆盖doSave()方法以处理“列表”。

如果我将此表单嵌入到另一个表单中,则永远不会调用特殊的doSave()方法。结果是一切正常,只是没有存储m:n关系。

我是否必须处理m:n关系manuel?

由于

1 个答案:

答案 0 :(得分:1)

使用sf 1.4越好在表单类

中使用
public function configure() {
    $this->embedRelation('relationName'); 
    //other configuration
}

这对于更新/插入操作“正如此”,但您的模型关系定义必须清晰。

对于进一步的关系集成,您可以覆盖sfForm或sfDoctrineForm方法(尤其是doBind,doUpdateObject,saveEmbeddedForms)以添加选择性删除,特定数据绑定等。

可以找到关于这个主题的好的论文here这是symfony 1.3,但适用相同的模式。

这种实现的好理由是你在模块的actions.class.php中没有任何改变,因此避免与其(或它们的)相关模块创建对表单的依赖。