Symfony Form EntityType,添加自定义数据以供选择

时间:2016-05-03 16:41:44

标签: symfony symfony-forms

我有一个包含EntityType类型字段的表单:

$builder->add(
            'contacts',
            EntityType::class,
            [
                'label'         => 'Recipient',
                'required'      => false,
                'expanded'      => true,
                'multiple'      => true,
                'class'         => 'MyApp\Entity\Contact',
                'choice_label'  => 'name',
                'query_builder' => function (EntityRepository $er)  {

                    return $er->createQueryBuilder('c')

                },
                'group_by'      => function (Contact $contact, $key, $index) {
                    return $contact->getClient()->getName();
                },
            ]
        );

如您所见,表单显示复选框,标签为Contact-> getName()。

每件事情都是正确的,表格会显示每个复选框,如:

<input id="id_checkbox" type="checkbox" />
<label for="id_checkbox">name</label>

现在,对于每个复选框,我想添加额外的数据,如电子邮件地址。我希望复选框显示如下:

<input id="id_checkbox" type="checkbox" />
<label for="id_checkbox"><span title="contact_email">contact_name</span></label>

如何将电子邮件数据传递给模板(树枝块)?

1 个答案:

答案 0 :(得分:3)

请参阅choice_label的文档:http://symfony.com/doc/current/reference/forms/types/entity.html#choice-label

您修改的代码类似于:

$builder->add(
    'contacts',
    EntityType::class,
    [
        'label'         => 'Recipient',
        'required'      => false,
        'expanded'      => true,
        'multiple'      => true,
        'class'         => 'MyApp\Entity\Contact',
        'choice_label'  => function ($contact) {
            return sprintf('%s (%s)', $contact->getName(), $contact->getEmail());
        },
        // ...
    ]
);