[英]Symfony2 Embedded Forms
我试图理解symfony2中的嵌入形式。
我有两个实体icon
和asset
有一个多向他们以及之间一对多的关系OneToOne
上$icon->imageLarge
和icon->imageThumb
。
注意:(Asset是类名,但在图标内引用为$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',
));
}
}
和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()));
到目前为止,一切似乎都在交互,我已经在模板中创建了表单,其中显示了图标名称字段以及两个资产文件上传器。
我迷路的地方是如何访问上载的assets
。 我需要将这两个assets
到db,然后设置$icon->addImage($asset1); $icon->addImage($asset2);
$icon->addImage($asset1); $icon->addImage($asset2);
对于许多对许多人,还有$icon->setImageThumb($asset1); $icon->setImageLarge($asset2);
$icon->setImageThumb($asset1); $icon->setImageLarge($asset2);
我不确定这一切是否有意义,但是对弄清楚逻辑或简单地访问这些资产的任何帮助将不胜感激!
您可以按以下方式访问上载的资产:
$imageThumbFile = $form->get('imageThumb')->get('file')->getData();
$imageLargeFile = $form->get('imageLarge')->get('file')->getData();
如果您打算将这些作为blob存储在数据库中,则可能会发现以下SO问题很有帮助: 如何使用Doctrine保留图像
或者,您可以按照食谱手册如何使用Doctrine处理文件上传,将上传的文件存储在文件系统中,并将文件上传集成到实体生命周期中
编辑:
如果使用食谱条目中的生命周期回调方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.