我正在使用 Symfony 5。
我希望每个登录用户在 EasyAdmin 3 中都有自己的空间,这样任何用户都不会看到其他用户的记录。我将用户与数据库中的每个表一起存储。
对于简单的列表视图,我设法使用以下扩展使其工作AbstractCrudController:
<?php
namespace App\Controller\Admin;
use Doctrine\ORM\QueryBuilder;
use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
use EasyCorp\Bundle\EasyAdminBundle\Orm\EntityRepository;
abstract class CustomCrudController extends AbstractCrudController
{
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
{
$qb = $this->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters);
$qb->andWhere('entity.user = :user');
$qb->setParameter('user', $this->getUser());
return $qb;
}
}
我还通过EventSubscriber.
问题是,某些表单与另一个实体(例如 )有关系AssociationField::new('food'),并且在填充下拉列表时它会忽略我的新功能。因此您将看到属于另一个用户的记录。
如何覆盖这些下拉列表以仅显示属于当前用户的数据?
慕勒3428872