我有一个具有assotation字段类型(相关实体列表)的表单。

我一直试图实现的是在“newAction”表单上过滤此列表(创建新实体)。

例如,下面的屏幕:

  • 有一个带有“用户”字段的测量实体。
  • 存在一个部门实体,该字段具有字段“Survey”(@ ORM\ManyToOne),用户可以在其中选择调查。

  • 您可以看到两个可用的调查,但是我只想显示第一个,因为它的“用户”字段值与当前用户相同。

    symfony - Symfony EasyAdminBundle : Filter entities in assotiation field-LMLPHP

    这很令人困惑,因为在调试时找不到传递到Survey字段的值。

    最佳答案

    最好的方法是覆盖默认 Controller ,然后将查询生成器应用于这种形式。

    YML:-

    easy_admin:
        entities:
            Department:
                class: YourBundle\Entity\Department
                controller: YourBundle\Controller\Admin\Model\DepartmentController
    

    在DepartmentController中:
    <?php
    
    namespace YourBundle\Controller\Admin\Model;
    
    use Doctrine\ORM\EntityRepository;
    use Doctrine\ORM\QueryBuilder;
    use Symfony\Bridge\Doctrine\Form\Type\EntityType;
    use JavierEguiluz\Bundle\EasyAdminBundle\Controller\AdminController;
    
    class DepartmentController extends AdminController
    {
        public function createDepartmentEntityFormBuilder($entity, $view)
        {
            $formBuilder = parent::createEntityFormBuilder($entity, $view);
    
            $user = $this->get('security.token_storage')->getToken()->getUser();
    
            $formBuilder->add('survey', EntityType::class, [
                'class' => 'YourBundle\Entity\Survey',
                'query_builder' => function (EntityRepository $er) {
                    return $er->createQueryBuilder('s')
                        ->where('s.user = :user')
                        ->setParameter('user', $user);
                },
            ]);
    
            return $formBuilder;
        }
    }
    

    关于symfony - Symfony EasyAdminBundle : Filter entities in assotiation field,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40197724/

    10-13 00:03