我创建了一个表单,其中填充了符合特定条件的用户的下拉菜单。但是,将发送整个用户数组,但是不符合条件的条目为空白,因此我有一个下拉菜单,其中包含很多空白选项,我不希望这样做。查看其他stackoverflow问题,使用了“占位符”和“空值”,但这些似乎不起作用。
这是表格中的代码:
->add(
'userParent',
EntityType::class,
[
'class' => User::class,
'choice_label' => function ($parents) {
return $parents->getUniqueName();
}
]
)
和getUniqueName函数:
public function getUniqueName() {
$name = "";
$nameBlock = json_decode($this->name, true);
if (is_array($nameBlock) && isset($nameBlock['name'])) {
$name = $nameBlock['name'];
}
return $name;
}
答案 0 :(得分:0)
我不好,我读得太快了。
由于您的字段已序列化,因此无法使用自定义查询来过滤不带名称的实体,但是如果显示了表单,则仍可以在呈现时忽略空名称。例如,通过表单主题,通过覆盖默认的choice_type主题,或为您的字段设置自定义block_name并创建关联的主题,请参见https://symfony.com/doc/current/form/form_customization.html#form-theming-in-twig和https://symfony.com/doc/current/reference/forms/types/form.html#block-name
答案 1 :(得分:0)
->add(
'userParent',
EntityType::class,
[
'class' => User::class,
'query_builder' => function (\Doctrine\ORM\EntityRepository $repository) {
// fetch data from the repository based on your criteria
return $repository->findUsersFunction();
//or create the query right here
//return $er->createQueryBuilder('u')->where(); ...
}
]
)