2017-02-03 6 views
1

Ich verwende Sonata Admin in meiner Anwendung und möchte einige Tabs beim Erstellen oder Bearbeiten der Entität je nach Benutzerrechten deaktivieren. Bisher habe ich versucht, eine CSS-Klasse auf der Registerkarte hinzuzufügen, aber sie scheint ignoriert zu werden, wenn sie gerendert wird. Hier ist mein Code:Sonata Admin Form Tabs

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $securityContext = $this->getConfigurationPool()->getContainer()->get('security.authorization_checker'); 
    $em = $this->getConfigurationPool()->getContainer()->get('Doctrine')->getManager(); 
    $arr = $em->getRepository('AppBundle:Staff')->findByDesignation(9); 
    $formMapper 
     ->tab('1. Service Start Section') 
     ->with('Brief Information') 
      ->add('dateOfReceipt','sonata_type_datetime_picker', array('format'=>'dd/MM/yyyy HH:mm', 'dp_side_by_side' => false,'dp_use_current' => true)) 
      ->add('receiptMode','choice',['choices' => ['Email' => 'Email', 'Letter' => 'Letter', 'Orally/Meeting' => 'Orally/Meeting', 'Phone' => 'Phone']]) 
      ->add('client', 'sonata_type_model_list', array('btn_delete' => false)) 
      ->add('natureOfTheBrief',CKEditorType::class, array(
      'config' => array(
       'uiColor' => '#ffffff', 
       //... 
      ))) 
      ->add('forwardTo',StaffType::class,['label' => 'Forward To', 'choices' => $arr,'choice_value' => 'id']) 
     ->end() 
     ->end(); 
     $disabled = $securityContext->isGranted('ROLE_PROFESSIONAL_SERVICES_MANAGER') ? '' : 'tab-disabled'; 
     $formMapper 
    ->tab('2. Service Commencement Section',array('class' => $disabled)) 
     ->with('Brief Analysis') 
     ..... 
     ..... 
     ->end() 
    -end(); 

Antwort

2

einfach fügen Sie nicht die Registerkarte überhaupt, wenn der Benutzer nicht die entsprechenden Rechte hat:

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $securityContext = $this->getConfigurationPool()->getContainer()->get('security.authorization_checker'); 
    $em = $this->getConfigurationPool()->getContainer()->get('Doctrine')->getManager(); 
    $arr = $em->getRepository('AppBundle:Staff')->findByDesignation(9); 
    $formMapper 
     ->tab('1. Service Start Section') 
     ->with('Brief Information') 
      ->add('dateOfReceipt','sonata_type_datetime_picker', array('format'=>'dd/MM/yyyy HH:mm', 'dp_side_by_side' => false,'dp_use_current' => true)) 
      ->add('receiptMode','choice',['choices' => ['Email' => 'Email', 'Letter' => 'Letter', 'Orally/Meeting' => 'Orally/Meeting', 'Phone' => 'Phone']]) 
      ->add('client', 'sonata_type_model_list', array('btn_delete' => false)) 
      ->add('natureOfTheBrief',CKEditorType::class, array(
      'config' => array(
       'uiColor' => '#ffffff', 
       //... 
      ))) 
      ->add('forwardTo',StaffType::class,['label' => 'Forward To', 'choices' => $arr,'choice_value' => 'id']) 
     ->end() 
     ->end(); 

    if($securityContext->isGranted('ROLE_PROFESSIONAL_SERVICES_MANAGER')){ 
     $formMapper 
      ->tab('2. Service Commencement Section',array('class' => $disabled)) 
      ->with('Brief Analysis') 
      ..... 
      ..... 
      ->end() 
     ->end(); 
} 
Verwandte Themen