gpt4 book ai didi

Symfony EasyAdminBundle : Filter entities in assotiation field

转载 作者:行者123 更新时间:2023-12-03 21:28:08 24 4
gpt4 key购买 nike

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

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

例如,以下屏幕:

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

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

    enter image description here

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

    最佳答案

    最好的方法是覆盖默认 Controller 并为这样的表单应用查询构建器。

    YML:-

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

    在部门 Controller 中:-
    <?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 EasyAdminBundle : Filter entities in assotiation field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40197724/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com