【发布时间】:2016-03-05 07:57:08
【问题描述】:
我有 Symfony 2.3 + Sonata Admin + Sonata User Bundle。
我创建了一个实体Student,以及另一个实体Contact。 Student 与 Contact 具有一对多关系。我在StudentAdmin 类中将Contact 添加到Student 和sonata_type_collection。我还创建了一组用户Operator 并将所有权限分配给Student,但只有list 和view 分配给Contact。
我的问题是Operator 的任何用户都无法添加或删除Contact(来自学生编辑页面),但他们可以编辑(并保存值)。
有什么建议或例子吗?
一些代码:
分配的角色:
ROLE_SONATA_ADMIN_STUDENT_EDIT
ROLE_SONATA_ADMIN_STUDENT_LIST
ROLE_SONATA_ADMIN_STUDENT_CREATE
ROLE_SONATA_ADMIN_STUDENT_VIEW
ROLE_SONATA_ADMIN_STUDENT_DELETE
ROLE_SONATA_ADMIN_CONTACT_LIST
ROLE_SONATA_ADMIN_CONTACT_VIEW
ROLE_ADMIN: ROLE_USER, ROLE_SONATA_ADMIN
/**
* @ORM\OneToMany(targetEntity="MyBundle\Entity\Contact",
mappedBy="student",
cascade={"persist", "remove"})
**/
private $contact;
->add('contact', 'sonata_type_collection',
array(
'label' => 'Contact',
'by_reference' => false,
),
array(
'edit' => 'inline',
'inline' => 'table',
))
谢谢!
【问题讨论】:
-
你想达到什么目的?您希望具有 Operator 角色的用户添加/删除联系人?您必须添加角色 ROLE_SONATA_ADMIN_CONTACT_CREATE、ROLE_SONATA_ADMIN_CONTACT_DELETE
-
英语不是我的语言,也许我拼错了什么。使用我分配的角色,当我在学生编辑页面中时,操作员用户无法添加或删除联系人(以嵌入式形式),没关系,因为按钮添加/删除消失了,但他可以编辑/更改值(由用户先前添加具有访问权限),因为输入已启用,并且当我保存学生时,这些值将保持联系。我不想要那个。我有其他用户组。我认为问题在于了解角色如何与相关/嵌入式实体一起工作。
标签: symfony one-to-many roles sonata-admin sonata-user-bundle