使用Twig访问Symfony子表单中的form.vars.value

时间:2016-08-04 14:23:32

标签: forms symfony twig

我正在研究Symfony 2.7 WebApp,我想为其中一个使用自定义Form Widget。窗口小部件需要访问| | 33% | | | | | 33% | | 33% | | | --------------------------- | 100% | 。只要在主窗体中使用Widget,这就可以正常工作。但是当在子表单中使用Widget时,form.vars.value为空。

表格中使用的类:

form.vars.value

这些课程的自定义表单类型:

class AdressBookEntry { 
    // The main phone number of this contact: Type PhoneNumber
    protected $mainPhoneNumber;
    //...getter and setter for mainPhoneNumber

    // An array of Addresses
    protected $addresses;
    //...getter and setter for addresses

    ...
}

class Address { 
    // The phone number of this address: Type PhoneNumber
    protected $phoneNumber;
    //...getter and setter for phoneNumber

    ...
}

class PhoneNumber {
    ...
}

PhoneNumberEdit的自定义Widget

// Custom FormType for AddressBookEntries
class AdressBookEntryType extends AbstractType {
    ...

    public function buildForm(FormBuilderInterface $builder, array $options) {  
        // Type 'phone_number_edit' is registered in services.yml
        $builder
            ->add('mainPhoneNumber', 'phone_number_edit', array(
                'label' => '...',
                ... 
            ))  

            ->add('addresses', 'collection', array(
                'label' => '...',
                ... 
            ));
    }
}


// Custom FormType for Address
class AddressType extends AbstractType {
    ...

    public function buildForm(FormBuilderInterface $builder, array $options) {  
        $builder
            ->add('mainPhoneNumber', 'phone_number_edit', array(
                'label' => '...',
                ... 
            ))  

            ...;
    }
}

主窗体的PhoneNumberEdit(代表{% block phone_number_edit_widget %} ... {{ dump(form.vars.value) }} ... )工作正常。 AddressBookEntry语句显示已分配的dump对象的内容。

然而,在PhoneNumber集合的子表单中,addresses变量为空。转储仅显示form.vars.value

那么,如何在子表单中访问""?小部件如何识别它在主窗体或子窗体中的使用?

更新

评论中提到的一些其他信息:

@Jeet:如前所述,转储显示空值/字符串:form.vars.value

@DOZ:这是Twig代码:

""

1 个答案:

答案 0 :(得分:1)

使用值而不是form.vars.value

{% block phone_number_edit_widget %}
    ...
    {{ dump(value) }}
    ...