"visible" entity/document 的 Symfony 3 选择列表
Symfony 3 choice list with "visible" entity/document
我有 2 个文档 category
和 supplier
以及一个从 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()
},
// ...
))
希望我正确理解了您的需求。
我有 2 个文档 category
和 supplier
以及一个从 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()
},
// ...
))
希望我正确理解了您的需求。