Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在symfony2中编辑多个一对多实体?_Php_Symfony_Doctrine Orm - Fatal编程技术网

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

Php 如何在symfony2中编辑多个一对多实体?,php,symfony,doctrine-orm,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

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

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

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
使用原则的实体映射效果良好。还集成了FOSUserBundle。实际上,我可以作为用户登录,并且可以查看自己的任务列表

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

我想到这一点:

  • 如果我向控制器提供任务列表id(以显示特定列表中的所有任务),则更新后该id将丢失,并且将显示来自所有用户的所有任务。(我通过crud生成器
    php应用程序/控制台生成:条令:crud
    )创建了表单和控制器)
  • 我曾考虑将任务列表id放入会话中,但发现这是一个糟糕的解决方案
  • 我尝试搜索不同的方法(例如,
    symfony2 pass参数到子实体
    symfony2 pass控制器变量
    ),但除了将控制器更改为服务之外,找不到与此主题相关的任何信息
  • 我应该创建一个服务,可能来自任务列表控制器或任务控制器。但我不确定这种方法

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

您应该看看


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

您的第一个想法是正确的,您需要在控制器中创建一个操作,允许编辑特定的列表
ListedAction($id)
成功提交并保存子任务上的数据后,您需要使用相同的参数重定向到此操作,您的控制器中肯定已经有了所有这些逻辑,不是吗?