与えられたコレクションに表示されるデータをフィルタリングしたいので、埋め込みコレクションフォームを使用する際に問題があります。すなわちSymfony 2いくつかの基準を使用してコレクションフォームを埋め込む方法
<?php
Class Parent
{
... some attributes ...
/**
* @ORM\OneToMany(targetEntity="Child", mappedBy="parent", cascade={"all"})
*/
private $children;
... some setters & getters ...
}
Class Child
{
private $attribute1;
private $attribute2;
/**
* @ORM\ManyToOne(targetEntity="Parent", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $parent;
... some setters & getters ...
}
それから私は使用してフォームを構築:私は$attribute1
および/またはChild
モデルクラスの$attribute2
によってコレクションをフィルタリングしたいとき
class ParentChildType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('children', 'collection', array(
'type' => ChildrenType(),
'allow_add' => true,
));
}
}
...
On controller:
$parent = $this->getDoctrine()->getEntityManager()->getRepository('AcmeBundle:Parent')->find($id);
$forms = $this->createForm(new ParentChildType(), $parent)->createView();
and then..
return array('forms' => $forms->crateView());
私の問題はあります。
このコレクションフォームの条件でフィルタリングする方法はありますか?
通常、$ parentを読み込み、必要な子だけに読み込むときにクエリを使用します。 $ parent- $ repo-> load($ id、$ params);フォームの問題よりもモデルの問題が多い – Cerad
しかし、モデルには問題はありません。問題はコレクション型フォームのように使用したいときです。 – alvaroveliz