4

어소시에이션 필드 유형 (관련 엔티티 목록)이있는 양식이 있습니다.Symfony EasyAdminBundle : 어소시에이션 필드의 엔티티 필터링

나는 "newAction"양식 (새로운 엔티티 생성)에서이 목록을 필터링하는 것을 시도했습니다.

  1. 필드 "사용자"와 조사 기관이 아래 화면에서 다음과 같은 예를 들어

    .

  2. 사용자가 설문 조사를 선택하는 "설문 조사"필드 (@ORM \ ManyToOne)가있는 부서 엔티티가 있습니다.

사용자 필드 값이 현재 사용자와 같기 때문에 두 가지 설문 조사를 볼 수 있지만 첫 번째 설문 조사 만 표시하려고합니다. 내가 debuging 때이 설문 조사 필드로 전달 된 값을 찾을 수 없기 때문에

enter image description here

그것은 혼란이다.

+0

https://github.com/javiereguiluz/EasyAdminBundle/issues/1145 – yceruto

답변

2

가장 좋은 방법은 기본 컨트롤러를 무시하고 이와 같은 양식에 쿼리 작성기를 적용하는 것입니다.

YML -

DepartmentController에서
easy_admin: 
    entities: 
     Department: 
      class: YourBundle\Entity\Department 
      controller: YourBundle\Controller\Admin\Model\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; 
    } 
}