Bic*_*icu 12 symfony-forms symfony symfony-2.1
我应该如何read-only使用Symfony表单组件渲染字段?
这就是我试图这样做无济于事的方式:
Symfony 2
$builder
->add('descripcion', 'text', array(
'read_only' =>'true'
));
}
Run Code Online (Sandbox Code Playgroud)
Symfony 3
$builder
->add('descripcion', TextType::class, array(
'read_only' => 'true'
));
}
Run Code Online (Sandbox Code Playgroud)
Pmp*_*mpr 22
提供的答案都会在Symfony 3上以此异常结束:
未捕获的PHP异常Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException:"选项"read_only"不存在.
正确的方法是利用attr该领域的财产:
->add('descripcion', TextareaType::class, array(
'attr' => array(
'readonly' => true,
),
));
Run Code Online (Sandbox Code Playgroud)
Cou*_*les 11
我相信唯一安全的方法是将表单字段显示为只读,并且还阻止表单接受请求中的新值,如下所示.
$builder->add(
'description',
TextType::class,
['disabled' => true]
);
Run Code Online (Sandbox Code Playgroud)
使用其中任何一个['attr' => ['readonly' => true]]或['attr' => ['disabled' => true]]将使您容易受到伪造请求的其他建议.
后两个选项都将在字段上设置readonly或者disabled属性,但如果包含在请求中,您的表单仍将接受此字段的新值.
只有上面的第一个选项都会禁用表单字段,并且还会阻止表单接受请求中字段的新值.
我用Symfony Form 3.4进行了测试.我不知道4的行为是否相同.
您已将只读属性声明为字符串,它必须是布尔值.
删除周围的引号 true
像这样:
->add('descripcion','text',array('read_only' => true))
Run Code Online (Sandbox Code Playgroud)
是的,没有引号.
小智 6
Symfony 4 只允许在表单域中使用“禁用”选项。但“只读”是不同的东西。
我为“只读”找到的唯一解决方案是:
->add('fieldname', TextType::class, [
'label' => false,
'attr'=> [ 'readonly' => true ]
])
Run Code Online (Sandbox Code Playgroud)
小智 5
从Symfony 2.8开始,不推荐使用read_only.所以请改用readonly.并为此属性提供布尔值
->add('','text',array('readonly' => true))
Run Code Online (Sandbox Code Playgroud)