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

相关文章

更多

《嵌入式开发(尚观科技)》(Embedded development)网络路由基础 ;已更新至第1集[MP4]

中文名: 嵌入式开发(尚观科技) 英文名: Embedded development 别名 ...

Symfony2网站开发

http://blog.csdn.net/liubei5/article/details/132902 ...

深入嵌入式Java虚拟机

深入嵌入式Java虚拟机的内容摘要:内容简介近几年来,由于移动终端设备的蓬勃发展,各式各样的硬件设备、 ...

《《Sundy--Android嵌入式底层开发课程共享版》《linux嵌入式系统开发.移植》》[压缩包]

中文名: 《Sundy--Android嵌入式底层开发课程共享版》《linux嵌入式系统开发.移植》 ...

嵌入式实现 微信网页版 群发信息。

webchatHelper 一个微信群发信息的chrome扩展 咦,动态图片发不出? http:// ...

我是如何在15天开发出一个网站的

最近历经半个月开发了一个新的网站 湖南英才网 ,这是我个人开发的第N个独立网站了,不过和往常不同的是, ...

HTML5项目笔记2:离线系统表单设计

在这个离线系统中,表单无疑是构成这个离线系统的视图部分,作为最前端,与客户的操作最密切相关的一块,所以 ...

swing 嵌入 网页中

我想把我做的swing嵌入至网页中,请问该如何操作呢?

Windows Moible, Wince 使用.NET Compact Framework的进行蓝牙(Bluetooth)开发 之 蓝牙虚拟串口 (Bluetooth Virtual Serial Port)

在之前的两篇文章分别讲述了在.NET Compact Framework下使用Windows Embe ...

最新问答

更多

获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)

我用Google搜索了一个解决方案。 “EnumDisplayModeProvider”是我自己设置网站的各种模式的枚举。 public EnumDisplayModeProvider GetDisplayModeId() { foreach (var mode in DisplayModeProvider.Instance.Modes) if (mode.CanHandleContext(HttpContext)) {

如何通过引用返回对象?(How is returning an object by reference possible?)

这相对简单:在类的构造函数中,您可以分配内存,例如使用new 。 如果你制作一个对象的副本,你不是每次都分配新的内存,而是只复制指向原始内存块的指针,同时递增一个也存储在内存中的引用计数器,使得每个副本都是对象可以访问它。 如果引用计数降至零,则销毁对象将减少引用计数并仅释放分配的内存。 您只需要一个自定义复制构造函数和赋值运算符。 这基本上是共享指针的工作方式。 This is relatively easy: In the class' constructor, you allocate m

矩阵如何存储在内存中?(How are matrices stored in memory?)

正如它在“熵编码”中所说的那样,使用Z字形图案,与RLE一起使用,在许多情况下,RLE已经减小了尺寸。 但是,据我所知,DCT本身并没有给出稀疏矩阵。 但它通常会增强矩阵的熵。 这是compressen变得有损的点:输入矩阵用DCT传输,然后量化量化然后使用霍夫曼编码。 As it says in "Entropy coding" a zig-zag pattern is used, together with RLE which will already reduce size for man

每个请求的Java新会话?(Java New Session For Each Request?)

你是如何进行重定向的? 您是否事先调用了HttpServletResponse.encodeRedirectURL()? 在这里阅读javadoc 您可以使用它像response.sendRedirect(response.encodeRedirectURL(path)); The issue was with the path in the JSESSIONID cookie. I still can't figure out why it was being set to the tomca

css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)

我认为word-break ,如果你想在一个单词中打破行,你可以指定它,这样做可以解决问题: .column { word-break:break-all; } jsFiddle演示。 您可以在此处阅读有关word-break属性的更多信息。 I think word-break, with which you can specify if you want to break line within a word, will do the trick: .column { word-break

无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)

我认为您忘记在分类时间内缩放输入图像,如train_test.prototxt文件的第11行所示。 您可能应该在C ++代码中的某个位置乘以该因子,或者使用Caffe图层来缩放输入(请查看ELTWISE或POWER图层)。 编辑: 在评论中进行了一次对话之后,结果发现在classification.cpp文件中错误地删除了图像均值,而在原始训练/测试管道中没有减去图像均值。 I think you have forgotten to scale the input image during cl

xcode语法颜色编码解释?(xcode syntax color coding explained?)

转到: Xcode => Preferences => Fonts & Colors 您将看到每个语法高亮颜色旁边都有一个简短的解释。 Go to: Xcode => Preferences => Fonts & Colors You'll see that each syntax highlighting colour has a brief explanation next to it.

在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)

你考虑过第三方拼写检查吗? 您可以将在C#中开发的自定义WinForms控件插入访问数据库吗? VB6控件怎么样? 如果你能找到一个使用第三方库进行拼写检查的控件,那可能会有效。 Have you considered a third party spell checker? Can you insert a custom WinForms controls developed in C# into an access database? What about a VB6 control? If

从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)

我有同样的问题,因为我在远程服务器上有两个图像,我需要在每天的预定义时间复制到我的本地服务器,这是我能够提出的代码... try { if(@copy('url/to/source/image.ext', 'local/absolute/path/on/server/' . date("d-m-Y") . ".gif")) { } else { $errors = error_get_last(); throw new Exception($err

从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))

我不确定我完全明白你在说什么。 你能编辑你的帖子并包含你正在做的Subversion命令/操作的特定顺序吗? 最好使用命令行svn客户端,以便容易为其他人重现问题。 如果您只是想获取文件的旧副本(即使该文件不再存在),您可以使用如下命令: svn copy ${repo}/trunk/moduleA/file1@${rev} ${repo}/trunk/moduleB/file1 其中${repo}是您的存储库的URL, ${rev}是您想要的文件的版本。 这将恢复该文件的旧版本,包括最高版本