我有一个名为 Page 的实体,它可以是 callToAction(布尔值),我想在一个子菜单上显示带有 callToAction == false 的页面实体,在另一个子菜单上显示带有 callToAction == true 的页面实体。我有一个页面实体的 CRUD。所以仪表板会是这样的:
MenuItem::subMenu('Page', 'far fa-file-alt')->setSubItems([
MenuItem::linkToCrud('Page', 'fa fa-alt', Page::class),
MenuItem::linkToCrud('Call To Action', 'fa fa-file-alt', Page::class),
])
但我不知道将 dql 放在哪里来显示我想要的实体(callToAction 真或假),我什至不知道这是否可能,但我知道它是使用 Easy Admin 2,这就是我想知道的原因。我也希望在 NEW Action 上这样做,当您在带有 callToAction == true 的页面上时,当您从这里创建新的实体页面时,callToAction 立即设置为 true 并且用户甚至看不到场地。还是不知道有没有可能。谢谢 :)
编辑:所以我发现我可以使用 createIndexQueryBuilder() 在索引上准确显示实体,并且效果很好,但我不知道如何根据我们显示的子菜单调用两个不同的 createIndexQueryBuilder。我尝试执行自定义操作并使用 createQueryBuilder 但我没有参数 searchDto 等:
public function configureActions(Actions $actions): Actions
{
$indexIsCallToAction = Action::new('indexIsCallToAction', 'Index Call To Action', 'fa fa-send')
->linkToCrudAction('indexIsCallToAction');
$actions->add(CRUD::PAGE_INDEX, $indexIsCallToAction);
return $actions;
//return parent::configureActions($actions); // TODO: Change the autogenerated stub
}
public function indexIsCallToAction(AdminContext $context,SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters){
$response = $this->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters);
return $response;
}
所以它不起作用。