我试图理解 symfony2 中的嵌入形式。
我有两个实体icon
,asset
它们之间存在多对多关系以及OneToOne
on$icon->imageLarge
和icon->imageThumb
。
注意:(资产是类名,但$image...
在图标内引用)
我最终想要的是一个与图标相关的图像库和图标上的两列,以反映哪个图像是主缩略图和主大图像......
我创建了一个 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',
));
}
}
和一个资产类型:
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()));
到目前为止,一切似乎都在交互,我已经在我的模板中创建了我的表单,它显示了图标名称字段以及两个资产文件上传器。
我迷路的地方是如何访问上传的assets
. 我需要将这两个持久化assets
到数据库,然后设置$icon->addImage($asset1); $icon->addImage($asset2);
为多对多,并且$icon->setImageThumb($asset1); $icon->setImageLarge($asset2);
我不确定这一切是否有意义,但任何帮助弄清楚逻辑或简单地如何访问这些资产将不胜感激!