私はProduct
,ProductFeatures
,Goods
,GoodsFeaturesValue
という4つのエンティティとそれらの間の関係を持っています。 Features
をProduct
に追加してから、静的フィールドのフォームを作成します。Goods + some some Features
Product
これはGoods
です。 Goods
の値はGoodsFeaturesValue
に保存されています。symfony 2フォームタイプコレクションモデルから新しいプロパティごとにラベルを変更
「symfony way」でこのフォームを作成するにはどうすればよいですか?
は、私が他のFeatures
のためのコレクションを使用して、この作品の罰金
を更新しましたが、私は、各値のProductFeatures
関係からラベルを設定することができますか?私は寺院をレンダリングするときにこれを行うことができますが、これは悪い:)?
//GoodsFormType class
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('name')
//other property...
->add('values', 'collection', array(
'required' => true,
'type' => new GoodsFeaturesValueFormType(),
'allow_add' => false,
'allow_delete' => false,
'by_reference' => false,
))
;
}
//GoodsFeaturesValueFormType
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('value', 'text')
;
}
//controller
public function saveAction($id)
{
$em = $this->getDoctrine()->getEntityManager();
$product = $em->getRepository('ShopCoreBundle:Product')->find($id);
if (!$product)
throw $this->createNotFoundException(sprintf('Product with id %s not found', $id));
$features = $em->getRepository('ShopCoreBundle:ProductFeatures')->findByProduct($id);
$goods = new Goods();
$goods->setProduct($product);
foreach ($features as $feature) {
$entity = new GoodsFeaturesValue();
$entity->setFeatures($feature);
$entity->setGoods($goods);
$entity->setProduct($product);
$goods->addGoodsFeaturesValue($entity);
}
$request = $this->getRequest();
$form = $this->createForm(new GoodsFormType(), $goods);
$form->bindRequest($request);
if ($form->isValid()) {
$em->persist($goods);
$em->flush();
return $this->redirect($this->generateUrl('core_product_index'));
}
return array(
'form' => $form->createView(),
'goods' => $goods,
'product' => $product,
'features' => $features,
);
}
次のように
ResizeFormListener
(コレクションの使用を)変更が、どのように新しい製品を作るためにそれを使うのか? コレクションタイプは、1対多リレーションシップに使用されます。 – rtyshykありがとう、私は試しましたが、新しい問題が...私の質問を更新 – rtyshyk