symfony2 + bootstrap 3 只读 select 下拉列表仍然可编辑
symfony2 + bootstrap 3 readonly select dropdown still editable
我正在使用 symfony2 和 bootstrap 3,当我将 readonly 属性设置为表单域时,它变灰并且我有禁止光标,但该域仍然是可编辑的(在我的例子中是 select 下拉菜单)。
只读属性对于简单的文本字段非常有用,但对于 select。
如何确保用户无法单击 select 并更改其值?
我不能使用 "disabled",因为我需要将值传递给表单。
使用jquery重写只读属性也没有用。
我的表格:
->add('product', 'entity', array(
'label' => 'Produit',
'class' => 'AppBundle:MarketPlace\Product',
'read_only' => true,
))
以下是可行的,但我不太喜欢它,我觉得它不像应该的那样干净:
<script>
$(function(){
$(':input[readonly]').each(function(){
$(this)
.hide()
.parent().append('<p>' + $(this).find(":selected").text() + '</p>')
})
;
})
</script>
为您的实体 as explained in the doc 创建一个数据转换器 ProductToTextTransformer
,然后在您的表单构建器中使用它,根据 [=] 的条件添加 select 或只读文本15=] 是否禁用 :
//...
// 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)
);
}
我正在使用 symfony2 和 bootstrap 3,当我将 readonly 属性设置为表单域时,它变灰并且我有禁止光标,但该域仍然是可编辑的(在我的例子中是 select 下拉菜单)。
只读属性对于简单的文本字段非常有用,但对于 select。
如何确保用户无法单击 select 并更改其值?
我不能使用 "disabled",因为我需要将值传递给表单。 使用jquery重写只读属性也没有用。
我的表格:
->add('product', 'entity', array(
'label' => 'Produit',
'class' => 'AppBundle:MarketPlace\Product',
'read_only' => true,
))
以下是可行的,但我不太喜欢它,我觉得它不像应该的那样干净:
<script>
$(function(){
$(':input[readonly]').each(function(){
$(this)
.hide()
.parent().append('<p>' + $(this).find(":selected").text() + '</p>')
})
;
})
</script>
为您的实体 as explained in the doc 创建一个数据转换器 ProductToTextTransformer
,然后在您的表单构建器中使用它,根据 [=] 的条件添加 select 或只读文本15=] 是否禁用 :
//...
// 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)
);
}