您好我想知道如何在Symfony表单构建器中创建一个表单,该表单将显示多个相同类型的行。例如,我有一系列图像:
Array:
[www.image1.com, www.image2.com, www.image3.com]
我想创建一个表单,为每个图像显示一个文本框字段。图像的数量是未知的,可能是1或可能是30.所以我想要类似的东西:
Image 1 displayed | textbox 1
Image 2 displayed | textbox 2
Image 3 displayed | textbox 3
[Save]
在文本框中,我会为每个文件编写标题,当我点击保存时,每一行都应保存在数据库中自己的行中,如下所示:
id | name | url
------------------------------------------
1 | name from textbox 1 | www.image1.com
2 | name from textbox 2 | www.image2.com
3 | name from textbox 3 | www.image3.com
我不知道如何从我的实体创建此表单。表单如何创建多个文本框,但知道如何将每个文本框连接到应该进入的正确文本。
答案 0 :(得分:1)
首先,您需要在基础实体和图像实体之间定义多对多关系。
就表单而言,您需要使用Symfony提供的Collection类型。
以下是一个例子:
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\ImageType;
// ...
$formBuilder->add('images', CollectionType::class, array(
// each entry in the array will be an "image" field
'entry_type' => ImageType::class,
// these options are passed to each "image" type
'entry_options' => array(
'attr' => array('class' => 'image-box')
),
));
当然,如果您不想制作自己的表单类型,可以将任何内置字段类型传递给entry_type
。
此处有更详细的信息:http://symfony.com/doc/current/reference/forms/types/collection.html
如果你需要帮助制作你的图像实体,那就有一个食谱配方:http://symfony.com/doc/2.2/cookbook/doctrine/file_uploads.html即使它已经过时,它仍然是相关的
希望有所帮助