【问题标题】:Symfony2 Sonata Admin show attribute only as a readyonly textSymfony Sonata Admin 仅将属性显示为只读文本
【发布时间】:2013-09-20 07:55:53
【问题描述】:

我的实体上有一些不可变的属性可以使用 sonata-admin bundle 进行管理。

我想在实体的编辑视图中显示它们,但不想提供任何更改它的机制(例如,值不应在输入字段内)

除了这个我什么都找不到:

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

我用read_onlyreadonlydisabled 等所有的东西都试过了。看起来不错,它现在在一个下拉列表中(因为它是一个实体),我无法修改它。

但我什至不想要那个。我真的需要它作为文本(当前的)。

如果你使用带有可软删除、可时间戳的 DoctrineExtensions,这尤其令人讨厌,因为每次“保存”都会保存表单数据。

将类型更改为“文本”而不​​是“实体”会用输入字段替换下拉列表。那么,这里最好的方法是什么?

【问题讨论】:

    标签: php symfony sonata-admin symfony-sonata


    【解决方案1】:
    $formMapper
        ->add('post', 'entity', 
            array(
                'label' => 'Some post',
                'read_only' => true,
                'disabled'  => true,
                'class' => 'Acme\DemoBundle\Entity\Post'
            )
        )
    ;
    

    【讨论】:

      【解决方案2】:

      answer 告诉如何自定义列表呈现。也许同样的方法也适用于表单渲染?

      如果没有,那么您可以根据create custom field type documentation创建您的自定义表单类型,并自定义模板。

      【讨论】:

      • 自定义列表渲染看起来不错,但是编辑模式呢?我无法为编辑和新的渲染类型添加模板...
      【解决方案3】:

      这有点旧,但这可能会对某人有所帮助。

      这是解决您的问题的代码。

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

      【讨论】:

        猜你喜欢
        • 2021-10-15
        • 1970-01-01
        • 2018-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-08
        • 1970-01-01
        • 2015-11-06
        相关资源
        最近更新 更多