表单 – Symfony2更改嵌入表单的字段选项

前端之家收集整理的这篇文章主要介绍了表单 – Symfony2更改嵌入表单的字段选项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的问题基本上是,是否可以从父表单更改嵌入式字段的选项?

为了说明这个问题,我有一个父表单类型类:

class FruitFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder,array $options)
    {
        $builder
            ->add('name','text')
            ->add('apple',new AppleFormType())
        ;
    }

和一个单独的包中的子表单类型类,我不想编辑,像这样:

class AppleFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder,'text')
            ->add('qty','integer',array('label' => 'rubbish label')
        ;
    }

而且我想把qty的标签改成别的东西,但是我只想在FruitForm中,而不是使用AppleForm的地方.我曾经希望能够做一些像:

class FruitFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder,new AppleFormType(),array('qty' => array('label' => 'better label')))
        ;
    }

要么:

class FruitFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder,new AppleFormType())
        ;

        $builder->get('apple')->get('qty')->setOption('label','better label');
    }

但是这些(和其他一些尝试)都没有让我失望.没有可以看到的setOption方法.

有人知道这样做吗?

谢谢

解决方法

我也想改变选项,从FOSUserBundle的现有字段显而易见的“改变标签”的情况.我知道我可以在树枝或翻译中做到这一点.

@redbirdo指出我正确的方向,“似乎添加一个名称相同的字段将取代它”.这是解决方案:

$field = $builder->get('username');         // get the field
$options = $field->getOptions();            // get the options
$type = $field->getType()->getName();       // get the name of the type
$options['label'] = "Login Name";           // change the label
$builder->add('username',$type,$options); // replace the field

猜你在找的HTML相关文章