使用Symfony 3,如何将只读字段显示为标签?(在 FOSUBundle 的注册表中)



使用Symfony 3和覆盖的FOSUserBundle的注册表,我有一个只读字段:

->add('name', TextType::class, array('attr' => array('readonly' => true)))

目前,它显示为文本框,但我希望它显示为文本/标签。我没有看到诸如"标签类型"之类的内容。可以这样做吗?

当文本框具有readonly属性时,您似乎需要自定义文本框的外观。所以简单的解决方案可以是单一的CSS样式:

// style.css
input[readonly] {
border: none;
// more custom styles
}

我的意思是,没有必要在Symfony中做一些特别的事情,并且对所有输入只读表单字段都很有用。

>"read_only"在Symfony 2.8中被弃用,现在只读是一个属性。试试这个:

public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'validation_groups' => ['whatever'],
'attr' => ['readonly' => true],  
]);
}

在其他情况下,当使用表单字段作为 attr 时,将其添加到您的树枝中:

{{ form_widget(form.name, {'attr': {readonly:readonly}) }}

执行此操作的正确方法是这样做并利用 attr 属性:

->add('name', TextType::class, array(
'attr' => array(
'readonly' => true,
),
));