Symfony表单构建器多行相同类型

时间:2017-01-17 16:50:48

标签: php forms symfony

您好我想知道如何在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

我不知道如何从我的实体创建此表单。表单如何创建多个文本框,但知道如何将每个文本框连接到应该进入的正确文本。

1 个答案:

答案 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即使它已经过时,它仍然是相关的

希望有所帮助