gpt4 book ai didi

symfony - easyadmin 实体字段的动态自定义选择

转载 作者:行者123 更新时间:2023-12-02 03:22:00 29 4
gpt4 key购买 nike

使用 symfony 4 安装了 easyadminbundle,为实体名称 Delivery 配置,它有一个字段关联到另一个实体名称 WeeklyMenu:

easy_amin.yaml:

Delivery:
...
form:
fields:
- { property: 'delivered'}
- { property: 'weeklyMenu', type: 'choice', type_options: { choices: null }}

我需要一个 weeklyMenu 实体的动态过滤结果,这样我就可以获得接下来几天的菜单列表等等。它现在设置为 null 但必须在此处获得过滤结果。

我读过有关重写 AdminController 的内容,我坚持使用它。我相信我必须覆盖列出关联实体结果的 easyadmin 查询构建器。

最佳答案

我已经想通了,如果有人正在寻找以下解决方案:

namespace App\Controller;

use Doctrine\ORM\EntityRepository;
use EasyCorp\Bundle\EasyAdminBundle\Controller\EasyAdminController;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilder;

class AdminController extends EasyAdminController {

public function createDeliveryEntityFormBuilder($entity, $view) {
$formBuilder = parent::createEntityFormBuilder($entity, $view);
$fields = $formBuilder->all();
/**
* @var $fieldId string
* @var $field FormBuilder
*/
foreach ($fields as $fieldId => $field) {
if ($fieldId == 'weeklyMenu') {
$options = [
'attr' => ['size' => 1,],
'required' => true,
'multiple' => false,
'expanded' => false,
'class' => 'App\Entity\WeeklyMenu',
];
$options['query_builder'] = function (EntityRepository $er) {
$qb = $er->createQueryBuilder('e');

return $qb->where($qb->expr()->gt('e.date', ':today'))
->setParameter('today', new \DateTime("today"))
->andWhere($qb->expr()->eq('e.delivery', ':true'))
->setParameter('true', 1)
->orderBy('e.date', 'DESC');
};
$formBuilder->add($fieldId, EntityType::class, $options);
}
}

return $formBuilder;
}
}

因此 easyAdmin 检查是否存在具有实体名称的表单生成器,即 create<ENTITYNAME>FormBuilder();你可以用你自己的逻辑覆盖这里。

关于symfony - easyadmin 实体字段的动态自定义选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54500402/

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