サブフォームで生成されたフォームラベルをカスタマイズしようとしています。Symfony2:フォームコレクションでフォームラベルをカスタマイズする
私は次のような特定のゲームの週に含まれているサッカーの備品を、表示したい:
- Fixture 1 : Manchester United (0) - (1) Arsenal - Fixture 2 : Chelsea (2) - (1) Liverpool - ...
私のフォームは、すべての備品や関連スコアが表示されますが、すべてのラベルは、データベースの列名(SCORE1、score2が含まれています)。代わりにチーム名を入れたい。 だから、それが現在示しています。コントローラで
- Fixture 1 : score1 (0) - (1) score2 - Fixture 2 : score1 (2) - (1) score2 - ...
を、私は週のフォーム(WeekType)を生成します。 $ weekは$ week-> getFixtures()を使って週データとフィクスチャデータを含んでいます。
コントローラ/ DefaultController.php
$form = $this->createForm(new WeekType(), $week)->createView();
return array(
'form' => $form,
);
フォーム/ WeekType.php
class WeekType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('fixtures', 'collection', array(
'type' => new FixtureType(),
));
}
}
フィクス形態は2つのフィールドを追加します。デフォルトラベルをチーム名に置き換えたい しかし、私はこのフォームの治具のデータにアクセスすることはできません。 $ optionsはNULLです。 $ options ['data']にはフィクスチャのデータが入っていると思っていましたが、間違っていました。
フォーム/ FixtureType.php
class FixtureType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('score1', 'text', array('label' => **WHAT TO PUT HERE**));
$builder->add('score2', 'text', array('label' => **WHAT TO PUT HERE**));
}
}
私はこのコードを使用して、すべての備品を表示し、それは素晴らしい作品。
{% for fixture in week.form.fixtures %}
{{ form_widget(fixture) }}
{% endfor %}
index.html.twig
たぶん私はindex.html.twigに直接私のラベルをカスタマイズすることができますが、どのように私は、フィクスチャデータを得ることができますか?
誰かがこの問題に遭遇して解決しましたか?