1

Symfony 2.0.14 を使用しており、フォーム テンプレートにデフォルト値を表示したいと考えています。

FormType はエンティティにバインドされています。追加のフィールドを追加したい場合、オプション property_path = false を使用するとエンティティ以外のフィールドを追加できることを知っていますよね?

逆の場合、フォームフィールドなしでエンティティフィールドを設定したい。OK、「createForm」にデフォルトのエンティティを与えるだけです。

ただし、テンプレートフォームでどのようにレンダリングできますか?


コントローラーコード:

public function newAction(Request $request)
{
    $game = new Game();

    $local = new Role();
    $visitor = new Role();
    $local->setType('LOCAL');
    $visitor->setType('VISITOR');
    $game->addRole($local);
    $game->addRole($visitor);

    $form = $this->createForm(new GameType(), $game);

ゲームタイプコード:

public function buildForm(FormBuilder $builder, array $options){
    $builder->add('teams', 'collection', array( 'type' => new RoleType()));
}

RoleType コード:

public function buildForm(FormBuilder $builder, array $options){
   $builder->add('type', 'text');  // <= I would like read only for end-User 
   $builder->add('score', 'integer');

フォーム テンプレート :

{% for role in form.teams %}
        <li>
            <div class="role-team">
                {{ role.type }} {# WRONG way, how to do ?  #}
                {{ form_row(role.score) }}
            </div>
        </li>
{% endfor %}
4

1 に答える 1

0

エンティティフィールドの値を(エンティティ全体をビューに渡さずに)表示したい場合は、次のように印刷できます。

{{ form.vars.value.type }}

(ロールエンティティにタイププロパティがあると仮定します)。

編集:私はあなたがループの中にいることに気づきました。以下を使用して、適切なプロパティパスを見つけてください。

{% for role in form.teams %}
    {% debug role %}
{% endfor %}
于 2012-08-06T18:18:50.553 に答える