symfony2 + bootstrap 3只读选择下拉菜单仍可编辑

zy1mlcev  于 2023-04-27  发布在  Bootstrap
关注(0)|答案(3)|浏览(123)

我正在使用symfony2和bootstrap 3,当我将readonly属性设置为表单字段时,它变灰,我有禁止的光标,但该字段仍然是可编辑的(在我的情况下是选择下拉菜单)。
readonly属性对于一个简单的文本字段很有用,但对于一个select则不行。
如何确保用户不能单击选择并更改其值?
我不能使用“disabled”,因为我需要将值传递给表单。使用jquery重写readonly属性也不起作用。
我的表格:

->add('product', 'entity', array(
                    'label' => 'Produit',
                    'class' => 'AppBundle:MarketPlace\Product',
                    'read_only' => true,
                ))
ajsxfq5m

ajsxfq5m1#

为实体as explained in the doc创建一个数据转换器ProductToTextTransformer,然后在formbuilder中使用它,根据select是否被禁用的条件添加select或readonly文本:

//...

     // this assumes that the entity manager was passed in as an option
     $entityManager = $options['em'];
     $transformer = new ProductToTextTransformer($entityManager);
     if ($condition_to_disabled_the_select){
       $builder->add('product', 'entity', array(
                'label' => 'Produit',
                'class' => 'AppBundle:MarketPlace\Product',
            ));
     }
     else{
        $builder->add(
            $builder->create('product', 'text', array('label' => 'Produit', 'read_only' => true))
                    ->addModelTransformer($transformer)
        );
     }
lfapxunr

lfapxunr2#

以下是工作,但我不喜欢它,我觉得它不干净,因为它应该是:

<script>
    $(function(){
        $(':input[readonly]').each(function(){
            $(this)
                .hide()
                .parent().append('<p>' + $(this).find(":selected").text() + '</p>')
        })
        ;
    })
</script>
2q5ifsrm

2q5ifsrm3#

我今天也遇到了同样的问题。我禁用了除选中选项之外的所有其他选择选项。

[
    'choice_attr' => static fn(?string $choice): array => ['disabled' => !$choice || $selectedValue !== $choice];
]

希望能帮到别人。

相关问题