如何在symfony2中编辑多个一对多实体?

时间:2015-08-04 20:30:35

标签: php symfony doctrine-orm

假设我想创建一个任务应用程序。

在这个应用程序中,我有用户,例如

id      name   
1       phil
2       anette

每个用户都可以拥有x个任务列表,例如

id     user_id    name
1      1          test
2      1          another test
3      2          cheers

同样,每个任务列表都可以有一个任务列表,例如:

id     tasklist_id    name
1      1              very important task
2      2              important task
3      1              another task in first list
4      3              item for anette

使用 Doctrine 的实体映射很好。还集成了 FOSUserBundle 。我实际上可以作为用户登录,并可以看到我自己的任务列表。

但是我不可能创建的是一种方式,以便用户可以编辑任务列表中的任务。还应注意,只有拥有特定任务列表的用户才能编辑它及其子节点。通过我的方法(自动生成的crud模板),您可以获取任何ID并更改每个内容。

我想到了这一点:

  • 如果我向控制器提供任务列表ID(以显示特定列表的所有任务),则更新后ID将丢失,并且将显示所有用户的所有任务。 (我通过crud生成器php app/console generate:doctrine:crud创建了表单和控制器)
  • 我考虑过将任务列表ID放入会话中,但发现这是一个不好的解决方案
  • 我尝试搜索不同的方法(例如symfony2 pass parameter to subentitysymfony2 pass controller variable)但除了将控制器更改为服务之外,找不到任何有关此主题的信息
  • 我应该创建一个服务,可能是在任务列表控制器或任务控制器之外。但我不确定这种做法。

关于symfony2解决这个(几乎肯定是常见的)问题的正确方法是什么?如何为用户提供编辑其任务列表的方法,还可以编辑特定任务?或者更为通用,如何在symfony中编辑多个一对多关系?

1 个答案:

答案 0 :(得分:1)

你应该看看How to Embed a Collection of Forms

关于您的安全问题,这是另一回事,但您应该检查您的控制器(在EditAction中)您尝试编辑的列表是否属于登录用户。