symfony2 に埋め込まれたフォームを理解しようとしています。
私には2つのエンティティがicon
ありasset
、それらの間には多対多の関係があり、OneToOne
on$icon->imageLarge
とがありicon->imageThumb
ます。
注: (アセットはクラス名ですが$image...
、アイコン内で参照されます)
私が最終的にしようとしているのは、アイコンに関連する画像のギャラリーと、アイコンの2つの列で、どの画像がメインのサムネイルであり、メインの大きな画像であるかを反映しています...
IconType を作成しました:
class IconType extends AbstractType{
public function buildForm(FormBuilderInterface $builder, array $options){
$builder->add('name');
$builder->add('imageThumb', new AssetType());
$builder->add('imageLarge', new AssetType());
}
public function getName(){
return 'icon';
}
public function setDefaultOptions(OptionsResolverInterface $resolver){
$resolver->setDefaults(array(
'data_class' => 'SixString\PearBundle\Entity\Icon',
));
}
}
および AssetType:
class AssetType extends AbstractType{
public function buildForm(FormBuilderInterface $builder, array $options){
$builder->add('file');
}
public function getName(){
return 'asset';
}
public function setDefaultOptions(OptionsResolverInterface $resolver){
$resolver->setDefaults(array(
'data_class' => 'SixString\PearBundle\Entity\Asset',
));
}
}
コントローラーでフォームを作成します。
$icon = new Icon;
$form = $this->createForm(new IconType(), $icon);
if($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
....
}
}
return $this->render('SixStringPearBundle:Icon:form.html.twig', array("form" => $form->createView()));
テンプレートでフォームを作成すると、アイコン名フィールドと 2 つのアセット ファイル アップローダーが表示されます。
私が迷子になっているのは、アップロードされた にアクセスする方法assets
です。assets
これら2つをdbに永続化$icon->addImage($asset1); $icon->addImage($asset2);
してから、多対多に設定する必要があります。$icon->setImageThumb($asset1); $icon->setImageLarge($asset2);
これがすべて理にかなっているのかどうかはわかりませんが、ロジックを理解するための助けや、単にこれらのアセットにアクセスする方法を教えていただければ幸いです!