在Symfony中只读整个表单

时间:2016-02-18 14:20:50

标签: symfony symfony-2.3

是否可以只使用一行(或两行)代码使整个表单只读取,就像在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添加到每个"添加"函数调用,但有一个单行吗?

我也试过使用这样的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时它起作用了。但是,我希望它是只读的。

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

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

1 个答案:

答案 0 :(得分:8)

" READ_ONLY"在Symfony 2.8中已弃用,而是将read只作为属性传递。请尝试以下方法:

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