14

これが私の FormType です:

public function buildForm(FormBuilder $builder, array $options)
{
    $builder
        ->add('user', 'entity', array(
            'class'   => 'UserBundle:User',
            'expanded' => true,
            'property' => 'name',
        ));
}

ビュー(Twig)でユーザーのフィールドにアクセスする方法はありますか?

私はこのようなことをしたいと思います:

{% for u in form.user %}
    {{ form_widget(u) }}
    {{ form_label(u) }}
    {% if u.moneyLeft > 0 %}
    <span>{{ u.name }} : {{ u.moneyLeft }} €&lt;/span>
    {% endif %}
{% endfor %}

... moneyLeftnameは User エンティティのフィールドです。

4

5 に答える 5

10

今日の時点で、マスターブランチ(および今後の2.1)で次のことを実行できます。

{{ u.vars.data.name }}

uはユーザーのフォームビューであり、アタッチされた変数のリストが含まれています。変数には、フォームの正規化されたデータが含まれます。dataこれは通常、オブジェクトです(カスタムモデルトランスフォーマーを追加した場合を除く)。

以前のバージョンのSymfonyでは、次のことができます。

{{ u.vars.value.name }}

変数には、フォームのビューデータが含まれます。valueこれは、オブジェクトでもあります(カスタムモデルまたはビュートランスフォーマーを追加した場合を除く)。

Symfonyマスターまたは>=2.1で作業している場合は、dataの代わりにアクセスすることをお勧めしますvalue

于 2012-07-25T17:44:22.103 に答える
9

これは、ラジオウィジェットの Symfony 3.1 で機能しました。

{% set entity = form.parent.vars.choices[form.vars.name].data %}
于 2016-11-03T12:25:51.663 に答える
5

バージョン 2.6.7

Aaron Geiser が提案したものと同様に、カスタマイズされたフォーム ウィジェットを使用してこれを実現できます。

{# src/AppBundle/Resources/views/Form/fields.html.twig #}
{% extends 'form_div_layout.html.twig' %}

{%- block entity_widget -%}
    <div {{ block('widget_container_attributes') }}>
    {%- for n, child in form %}
        {{- form_widget(child, {
            'entity': form.vars.choices[n].data
        }) -}}
        {{- form_label(child) -}}
    {% endfor -%}
    </div>
{%- endblock %-}

{%- block radio_widget -%}
{# You now have access to entity #}
{%- endblock -%}
于 2015-05-20T08:59:20.070 に答える