"visible" entity/document 的 Symfony 3 选择列表

Symfony 3 choice list with "visible" entity/document

我有 2 个文档 categorysupplier 以及一个从 category 创建的表单。我有一个嵌套形式 category,其中包括 supplier。 在 supplier 中,我有一个布尔字段 visible,我希望只能从选择列表中选择 supplier 设置为可见的 true。

在我的 category 表格中,我尝试了:

....
->add('suppliers', DocumentType::class, array(
            'class' => 'AppBundle:Supplier',
            'choice_label' => function ($category) {
                if ($category->getVisible == true)
                return $category->getName()

            },
 ....

但我得到的只是一个包含 10 个空字段(没有名称)和只有 1 个名称的选项列表(因为只有这个选项设置为 visible true)。

有什么想法吗?

我认为您需要过滤选项本身而不是它们的标签。

这可以使用用作 query_builder 选项的自定义查询来完成:

->add('suppliers', DocumentType::class, array(
    'class' => 'AppBundle:Supplier',
    'query_builder' => function (EntityRepository $er) {
        return $er->createQueryBuilder('c')
            ->where('c.visible', :visible)
            ->setParameter('visible', true);
    },
    'choice_label' => function ($category) {
        return $category->getName()
    },
    // ...
))

希望我正确理解了您的需求。