首页 \ 问答 \ Symfony2嵌入式表单(Symfony2 Embedded Forms)

Symfony2嵌入式表单(Symfony2 Embedded Forms)

我试图理解symfony2中的嵌入表单。

我有两个实体iconasset它们之间存在多对多的关系,以及$icon->imageLargeicon->imageThumb $icon->imageLarge上的OneToOne

注意:(资产是类名,但在图标内引用为$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);

我不确定这一切是否有意义,但任何帮助搞清楚逻辑或只是如何访问这些资产将不胜感激!


I am trying to understand the embeded forms in symfony2.

I have two entities icon and asset There is a many to many relationship between them as well as a OneToOne on $icon->imageLarge and icon->imageThumb.

note: (Asset is the class name but referenced as $image... inside the icon)

What I am trying to end up with is a gallery of images related to an icon and two columns on the icon to reflect which image is the main thumbnail and the main large image...

I have created an 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',
    ));
}
} 

and an 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',
        ));
}
}

I create my form in my controller:

$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()));

Everything appears to be interacting so far, I have created my form in my template and it shows the icon name field as well as the two asset file uploaders.

Where I am getting lost is how to access the uploaded assets. I need to persist these two assets to db and then set $icon->addImage($asset1); $icon->addImage($asset2); for the many to many and also $icon->setImageThumb($asset1); $icon->setImageLarge($asset2);

I'm not sure if this all makes sense, but any help figuring out the logic or simply how to access these assets would be appreciated!


原文:https://stackoverflow.com/questions/16978991
更新时间:2022-03-19 10:03

相关文章

更多

最新问答

更多
  • 在ios 7中的UITableView部分周围绘制边界线(draw borderline around UITableView section in ios 7)
  • Java中的不可变类(Immutable class in Java)
  • 寻求多次出现的表达式(Seeking for more than one occurrence of an expression)
  • linux只知道文件名,不知道在哪个目录,怎么找到文件所在目录
  • Actionscript:检查字符串是否包含域或子域(Actionscript: check if string contains domain or subdomain)
  • 懒惰地初始化AutoMapper(Lazily initializing AutoMapper)
  • 使用hasclass为多个div与一个按钮问题(using hasclass for multiple divs with one button Problems)
  • Windows Phone 7:检查资源是否存在(Windows Phone 7: Check If Resource Exists)
  • EXCEL VBA 基础教程下载
  • RoR - 邮件中的动态主体(部分)(RoR - Dynamic body (part) in mailer)
  • 无法在Google Script中返回2D数组?(Can not return 2D Array in Google Script?)
  • JAVA环境变量的设置和对path , classpth ,java_home设置作用和目的?
  • mysql 关于分组查询、时间条件查询
  • 如何使用PowerShell匹配运算符(How to use the PowerShell match operator)
  • Effective C ++,第三版:重载const函数(Effective C++, Third edition: Overloading const function)
  • 如何用DELPHI动态建立MYSQL的数据库和表? 请示出源代码。谢谢!
  • 带有简单redis应用程序的Node.js抛出“未处理的错误”(Node.js with simple redis application throwing 'unhandled error')
  • 使用前端框架带来哪些好处,相对于使用jquery
  • Ruby将字符串($ 100.99)转换为float或BigDecimal(Ruby convert string ($100.99) to float or BigDecimal)
  • 高考完可以去做些什么?注意什么?
  • 如何声明放在main之后的类模板?(How do I declare a class template that is placed after the main?)
  • 如何使用XSLT基于兄弟姐妹对元素进行分组(How to group elements based on their siblings using XSLT)
  • 在wordpress中的所有页面的标志(Logo in all pages in wordpress)
  • R:使用rollapply对列组进行求和的问题(R: Problems using rollapply to sum groups of columns)
  • Allauth不会保存其他字段(Allauth will not save additional fields)
  • python中使用sys模块中sys.exit()好像不能退出?
  • 将Int拆分为3个字节并返回C语言(Splitting an Int to 3 bytes and back in C)
  • 在SD / MMC中启用DDR会导致问题吗?(Enabling DDR in SD/MMC causes problems? CMD 11 gives a response but the voltage switch wont complete)
  • sed没有按预期工作,从字符串中间删除特殊字符(sed not working as expected, removing special character from middle of string)
  • 如何将字符串转换为Elixir中的函数(how to convert a string to a function in Elixir)