在 Symfony 中使整个表单只读

Making entire form readonly in Symfony

是否可以像 PEAR/QuickForm 中那样只用一(或两)行代码使整个表单只读?

我有以下代码:

$form = $this->createFormBuilder($user) 
                ->add('username', \Symfony\Component\Form\Extension\Core\Type\TextType::class, array('label' => 'Login: '))
                ->add('personal_name', \Symfony\Component\Form\Extension\Core\Type\TextType::class, array('label' => 'Imię i nazwisko: '))
(...)

我知道我可以将 "read_only" => true 添加到每个 "add" 函数调用中,但是有单行代码吗?

我也试过像这样使用 AbstractType:

class Register extends AbstractType
{
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'validation_groups' => array('registration'),
            'readonly' => true //I also tried read_only, read-only, read only but to no avail  
        ));
    }   

上面的代码不起作用,尽管当我将 'readonly' => true 替换为 'disabled' => true 时它...起作用了。但是我希望它是只读的。

我在这里想要完成的是,我想要一个视图(树枝模板、表单)来添加新实体、编辑现有实体和显示实体的详细信息(这是只读有用的地方)。也许你有更好的主意?

我知道我可以用 Javascript 做到这一点,但也许有一个 Symfony - 方法可以做到这一点?

"read_only" 在 Symfony 2.8 中被弃用,取而代之的是将只读作为属性传递。请尝试以下操作:

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