-2

我创建一个表单并添加 EntityType 字段:

        ->add('name', EntityType::class, [
            'class' => MyTest::class,
            'choice_label' => function($name){
                return $name->getName();
            },
            'mapped' => false
        ])

我想显示类别是汽车的名称。

我的数据库表是:

编号 | 姓名 | 类别

4

2 回答 2

0

只需这样做,在choice_label 上的回调函数中,您可以自由地做任何事情来修改标签,如果类别是字符串跳过getName(),如果您想显示类别而不是基于类别名称的某些字符串跳过开关以及

->add('name', EntityType::class, [
            'class' => MyTest::class,
            'choice_label' => function(MyTest $entity){
                switch($entity->getCategory()->getName()) {
                    case 'car':
                        return 'It\'s a car!';
                }
                return $entity->getCategory()->getName();
            },
            'mapped' => false
        ])
于 2020-01-15T12:38:50.337 回答
0

添加query_builder到您的代码中。

    ->add('name', EntityType::class, [
        'class' => MyTest::class,
        'query_builder' => function(EntityRepository $er){
            return $er->createQueryBuilder('u')
                ->where('u.category = :category')
                ->setParameter('category', 'car');
        },
        'choice_label' => function($name){
            return $name->getName();
        },
        'mapped' => false
    ])
于 2020-01-19T07:35:35.153 回答