我有一个具有assotation字段类型(相关实体列表)的表单。
我一直试图实现的是在“newAction”表单上过滤此列表(创建新实体)。
例如,下面的屏幕:
您可以看到两个可用的调查,但是我只想显示第一个,因为它的“用户”字段值与当前用户相同。
这很令人困惑,因为在调试时找不到传递到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/