我有一个映射到表单的实体,但我不想让所有字段都可编辑,但仍希望显示该值。
例如,这是我的表单类型:
class GameHasPlayerType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('inTeam', new TeamPositioningCheckboxType())
->add('positionX', new TeamPositioningNumberType(), array(
'attr' => array(
'class' => 'in-table'
)
))
->add('positionY', new TeamPositioningNumberType(), array(
'attr' => array(
'class' => 'in-table'
)
))
->add('exchanged', new TeamPositioningCheckboxType())
;
}
}
此类型具有自定义表单模板:
{% block team_positioning_widget %}
{% spaceless %}
<td>
{{ form_widget(form.inTeam) }}
</td>
<td>
{{ form.player.firstName }} {# Player is not in the form, but inside the mapped entity #}
</td>
{% endspaceless %}
{% endblock %}
从我想要引用的表单中引用未添加到表单的映射实体和访问字段。
如何从表单对象访问映射的实体?
答案 0 :(得分:13)
您可以通过form.vars.data属性访问映射的实体。
{{ form.vars.data.firstName }} {# The data attribute is the Player instance #}
或者documentation通过form.vars.value说明:
您可以通过form.vars.value访问表单的当前数据:
{{ form.vars.value.firstName }}