2015-12-01 107 views
0

我有Symfony 2.3 +奏鸣曲管理员+奏鸣曲用户包symfony奏鸣曲管理员角色嵌入onetomany实体

我已经创建了一个实体Student,另一个实体ContactStudentContact有一对多的关系。我已将Contact添加到Studentsonata_type_collection在我的StudentAdmin类中。我也创建了一组用户Operator并将所有权限分配给Student,但只有listviewContact

我的问题是,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', 
        )) 

谢谢!

+0

你到底想达到什么目的?你想让角色操作员添加/删除联系人?你必须添加角色ROLE_SONATA_ADMIN_CONTACT_CREATE,ROLE_SONATA_ADMIN_CONTACT_DELETE – HypeR

+0

英语不是我的语言,也许我拼错了一些东西。 我分配了角色,当我在学生编辑页面时,操作员用户无法添加或删除联系人(以嵌入的形式),没关系,因为按钮添加/删除消失,但他可以编辑/更改值有权访问的用户),因为输入已启用,并且当我保存学生时,这些值将保持联系。我不想那样。我有其他的用户组。 我认为问题是知道角色如何与相关/嵌入实体协同工作。 –

回答

0

我明白你的问题,我不认为索纳塔默认处理这个。

您必须检查当前用户角色,并删除联系人字段或在联系人字段中添加只读属性或禁用属性。

删除联系人字段

protected function configureFormFields(FormMapper $formMapper) 
{ 
    // check if current user has role contact edition 
    $hasContactRole = $this->getConfigurationPool()->getContainer()->get('security.context')->isGranted('ROLE_SONATA_ADMIN_CONTACT_EDIT')); 
    if ($hasContactRole) { 
     $formMapper->add('contact', 'sonata_type_collection', 
      array(
       'label' => 'Contact', 
       'by_reference' => false, 
      ), 
      array(
       'edit' => 'inline', 
       'inline' => 'table', 
      ) 
     ); 
    } 
} 
+0

太棒了!谢谢你的时间。这是一个优雅的解决方案,它让我开始思考如何覆盖Symfony/Sonata未涵盖的领域。 –

+0

如果它解决了你的问题,你应该接受我的答案,所以它会奖励我的工作并帮助有类似问题的人,这就是StackOverflow的工作原理;) http://meta.stackexchange.com/questions/23138/how-to-accept -the回答-ON-堆栈溢出 – HypeR

相关问题