简体   繁体   中英

Symfony2 Sonata Admin show attribute only as a readyonly text

I have some immutable attributes on my entity to administrate with sonata-admin bundle.

I want to show them in the edit-view of the entity, but don't want to provide any mechanism to change it (eg the value shall not be inside a input field)

I couldn't find anything but this:

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

I tried it out with read_only , readonly , disabled etc. all the stuff. It looks ok, it's now inside a dropdown (since it is an entity) and I can not modify it.

But I even don't want that. I really need it as text (the current one).

Especially this is annoying if you use DoctrineExtensions with softdeletable, timestampable, since every "save" saves also the form-data.

Changing the type to 'text' instead of 'entity' replaces the dropdown with a input-field.. So, what's the best approach here?

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

This answer tells how to customize list rendering. Maybe the same approach works with form rendering?

If not, then you can create your custom form type according to create custom field type documentation , and customizing the template.

This is a bit old but this might help someone.

Here is the code that resolves your issue.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM