2015-12-01 90 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

相關問題