symfony - 在 Symfony 中使整个表单只读

标签 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 添加到每个“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 时,它...起作用了。但是我希望它是只读的。

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

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

最佳答案

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

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

关于symfony - 在 Symfony 中使整个表单只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35483971/

相关文章:

php - symfony 2.3,使用外键持久化相关实体

php - 如何在 Symfony 2.3 的功能测试中登录 session 中的用户?

php - Symfony2 上 2 个 Controller 之间的路由问题

php - Ruby On Rails 服务容器

php - 无法将现有实体映射到 symfony2 中的嵌入形式

php - 访问 twig 中未映射的表单字段(Symfony 2.3)

symfony - FOSUserBundle 验证 Controller 中的电子邮件

php - 在 Symfony 2.8 中使用 app_dev.php 时无法访问真实文件

php - 使用 Symfony DomCrawler 获取元素的原始 HTML 代码

validation - 单元测试 - 使用实体管理器进行自定义类验证