私は賭けのウェブページを開発しようとしています。エンティティ "Apuesta" (賭け) とエンティティ "Partido" (試合) があります。「Apuesta」には、Partido のコレクション (attr $Partidos 内) と、コレクションを返すゲッター getPartidos() があります。「Partido」にはタイプ (0 または 1) があり、この値に応じてフォームのフィールドを指定します。
私が取得したいのは、「Partido」フォームを「Apuesta」フォームに含めることですが、「Partido」が $Type 値に応じて独自のフォームをレンダリングすることを認識したいのです。明らかに、「Apuesta」は彼自身の「Partidos」とともにデータベースに作成されます。
私のコードは次のとおりです。
class ApuestaForm extends AbstractType{
public function buildForm(FormBuilder $builder, array $options)
{
$p = $builder->getData()->getPartidos();
$builder->add('Jornada')
->add('Partidos', 'collection', array('type' => new PartidoForm()));
}
public function getName(){
return 'ApuestaForm';
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'A\ApuestaBundle\Entity\Apuesta',
);
}
}
#
class PartidoForm extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
**$tipo;
//$partido = $builder->getData();
//$tipo = $partido->getTipo();
$builder->add('Local')
->add('Visitante')
->add('Tipo')
->add('Jornada');
if ($tipo == 1){
$builder->add('some field 1')
}
else{
$builder->add('some field 2')
}
}
public function getName(){
return 'PartidoForm';
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'A\ApuestaBundle\Entity\Partido',
);
}
}
このように、「Apuesta」は自動的に自身の「Partido」をレンダリングし、各「Partido」は自分の $Type が 1 か 0 かを知る必要があります。問題は、$builder->getData() が「Partido」エンティティを取得しないことです。だけでなく、ヌルでもあります。
私が考えた別の方法は、エンティティ パラメータ「Partido」で構成することでしたが、問題は、「Apuesta」フォームが「Partido」のコレクションをレンダリングするため、単一のオブジェクト「Partido」を渡すことができないことです。 、コレクションでもあります。
非常に単純なフォームであるため、フォームイベントを使用しないようにしました。
どうもありがとう!