从Twig中的表单访问映射的实体

时间:2014-05-26 11:02:20

标签: twig symfony-forms symfony-2.4

我有一个映射到表单的实体,但我不想让所有字段都可编辑,但仍希望显示该值。

例如,这是我的表单类型:

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 %}

从我想要引用的表单中引用未添加到表单的映射实体和访问字段。

如何从表单对象访问映射的实体?

1 个答案:

答案 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 }}