簡體   English   中英

Symfony2 Sonata Admin 僅將屬性顯示為只讀文本

[英]Symfony2 Sonata Admin show attribute only as a readyonly text

我的實體上有一些不可變的屬性可以使用 sonata-admin 包進行管理。

我想在實體的編輯視圖中顯示它們,但不想提供任何更改它的機制(例如,值不應在輸入字段內)

除了這個我找不到任何東西:

$formMapper
    ->add('post', 'entity', 
        array(
            'label' => 'Some post', 
            'attr' => array(
                'readonly' => true,
                'disabled' => true
            ),
            'class' => 'Acme\DemoBundle\Entity\Post'
        )
    )
;

我用read_onlyreadonlydisabled等嘗試了所有的東西。 看起來不錯,它現在位於下拉列表中(因為它是一個實體),我無法修改它。

但我什至不想那樣。 我真的需要它作為文本(當前文本)。

如果您使用具有可軟刪除、可時間戳的 DoctrineExtensions,這尤其令人討厭,因為每次“保存”也會保存表單數據。

將類型更改為“文本”而不是“實體”會用輸入字段替換下拉列表。那么,這里最好的方法是什么?

$formMapper
    ->add('post', 'entity', 
        array(
            'label' => 'Some post',
            'read_only' => true,
            'disabled'  => true,
            'class' => 'Acme\DemoBundle\Entity\Post'
        )
    )
;

這個答案講述了如何自定義列表渲染。 也許相同的方法適用於表單渲染?

如果沒有,則可以根據創建自定義字段類型文檔和自定義模板來創建自定義表單類型。

這有點舊,但這可能會對某人有所幫助。

這是解決您的問題的代碼。

$formMapper
->add('post', 'entity', array('label' => 'Some post','attr' => array(
                    'readonly' => 'readonly',
                    'disabled' => 'disabled',
                ),
                'class' => 'Acme\DemoBundle\Entity\Post')
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM