使用Twig在Symfony子窗体中访问form.vars.value
我正在开发Symfony 2.7 WebApp,我想为其中一个实体使用自定义窗体小部件。 窗口小部件需要访问form.vars.value
。 只要Widget在主表单中使用,这可以正常工作。 但是当在子窗体中使用Widget时, 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 {
...
}
这些类的自定义表单类型:
// 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的自定义Widget
{% block phone_number_edit_widget %}
...
{{ dump(form.vars.value) }}
...
主窗体的PhoneNumberEdit(代表AddressBookEntry
)工作正常。 dump
语句显示分配的PhoneNumber
对象的内容。
然而,在addresses
集合的子form.vars.value
中, form.vars.value
变量是空的。 转储显示""
。
那么,如何在子窗体中访问form.vars.value
? 小部件如何识别它在主窗体或子窗体中的使用?
更新:
评论中提到的一些额外信息:
@Jeet:如前所述,转储显示一个空值/字符串: ""
@DOZ:这是Twig代码:
{{ form_start(form) }}
{{ form_errors(form) }}
{{ form_row(form.name) }}
{{ form_widget(mainPhoneNumber) }}
<ul data-prototype"{{ _self.addressItem(form.addresses.vars.prototype)|e('html_attr') }}" >
{% for address in form.addresses %}
{{ _self.addressItem(address) }}
{% endfor %}
</u>
...
{{ form_end(form) }}
{% macro addressItem(address) %}
<li>
{{ form_widget(address.phoneNumber) }}
...
</li>
{% endmacro %}
使用值而不是form.vars.value
{% block phone_number_edit_widget %}
...
{{ dump(value) }}
...
链接地址: http://www.djcxy.com/p/81401.html