EasyAdmin 3 如何根据查询从操作 createEntity 设置关联

Posted

技术标签:

【中文标题】EasyAdmin 3 如何根据查询从操作 createEntity 设置关联【英文标题】:EasyAdmin 3 how to set association from action createEntity based on query 【发布时间】:2021-10-27 15:31:18 【问题描述】:

我希望创建一个添加到新操作的操作,但会根据添加的 url 参数预填充实体。例如设置关联。

文档显示了如何覆盖 createEntity 方法的设置值,但是该方法无法从请求中获取参数,因此我无法根据传递的参数设置关联。

这类似于How to set a default value in AssociationField EasyAdmin 3,但正如在本例中所提到的,请求不可用。

【问题讨论】:

【参考方案1】:

原来我们可以从请求堆栈中获取请求。

public function createEntity(string $entityFqcn)

    /** @var AgentAccreditation $entity */
    $entity = parent::createEntity($entityFqcn);

    $request = $this->get('request_stack')->getCurrentRequest();

    if ($agentId = $request->query->get('agentId')) 
        $agentRepository = $this->getDoctrine()->getRepository(Agent::class);
        $agent = $agentRepository->find($agentId);
        $entity->setAgent($agent);
    

    return $entity;

【讨论】:

以上是关于EasyAdmin 3 如何根据查询从操作 createEntity 设置关联的主要内容,如果未能解决你的问题,请参考以下文章

在 EasyAdmin 3 中使用预填充值重定向到新操作

如何在 Symfony EasyAdmin 3 中创建数据验证系统

如何在easyadmin 3中更改分页

如何在 Symfony EasyAdmin 3 中创建密码输入类型

功能测试 EasyAdmin 3 后端

EasyAdmin 3:如何基于 dql 为 CRUD 索引显示实体