2017-08-16 76 views
1

我有一個只有所有者可以編輯的「Sonata_type_collection」字段,我希望管理員只能讀取此屬性(他可以編輯其他屬性)。 我無法找到任何東西,但這樣的:Symfony 3 SonataAdmin在窗體中顯示一個只讀的「Sonata_type_collection」字段編輯

$formMapper->add('commandeElements', 'sonata_type_collection', array('required'=> true,'by_reference' => false,'attr' => array(
      'readonly' => true, 
      'disabled' => true 
     )), array(
     'edit' => 'inline', 
     'inline' => 'table', 
     'sortable' => 'position', 
    )); 

它的工作原理不知何故,屬性不能被編輯(當提交表單時顯示錯誤消息),但按鈕「添加」,勾選「刪除「仍然可以至少在視圖中編輯下拉菜單。

有沒有辦法做到這一點?

回答

0

可以隱藏的選項陣列

https://sonata-project.org/bundles/admin/3-x/doc/reference/form_types.html#sonata-type-collection

使用btn_add = false的按鈕,但我可能會嘗試在樹枝前端檢查,檢查用戶是否有一定的作用{% if is_granted('ROLE_ADMIN') %} ... {% endif %}和啓用或禁用表單組件。

我可能會做......

{% set disabled = !is_granted('ROLE_YOU_WANT_TO_ALLOW') %} // in your case ROLE_OWNER 

,然後渲染嘗試類似的情況...

{{ form_row(yourForm.yourCollectionName, { 
        'disabled': disabled 
       }) }} 

以一個例子樹枝模板參考

http://symfony.com/doc/current/reference/forms/twig_reference.html#form-variables-reference

這是一個想法,可以讓你做你想做的事

+0

感謝您的回答,您能更具體地說明如何在樹枝前端做到這一點嗎? – Midoox

+0

我修改了答案 – Enumus

相關問題