Symfony sonata EntityType 编辑表单 - 选择 - 获取其他当前
Posted
技术标签:
【中文标题】Symfony sonata EntityType 编辑表单 - 选择 - 获取其他当前【英文标题】:Symfony sonata EntityType edit form - select - get other that current 【发布时间】:2018-10-25 20:12:27 【问题描述】:我有这样的简单表单生成器字段:
$formMapper->add('project',EntityType::class, [
'class' => Project::class,
]);
它是树数据结构中选择父级的字段。 它在 ADD 中工作得很好,但在编辑中我不想用 id X 显示尽可能为 id X 的项目选择父项
我正在尝试使用“query_builder”属性,但不知道如何从 Admin 类中获取当前编辑项的 ID。
如何在select中捕获当前编辑项的这个id或最简单的排除id?
【问题讨论】:
给定的答案对您有帮助吗?如果没有,请告诉我们。如果是这样,请接受(并可能赞成)答案。完全无视答案有点不友好。 @Stephan Vierkant 感谢一些提示 【参考方案1】:我想您的 FormType 映射到您编辑的项目上。因此,您可以使用类似(类/字段/实体名称替换为您的名称):
use Doctrine\ORM\EntityRepository;
class ProjectFormType extends AbstractType
public function buildForm(FormBuilderInterface $builder, array $options)
$currentId = $builder->getData()->getId();
$builder->add('project', EntityType::class, array(
'class' => Project::class,
'query_builder' => function (EntityRepository $er) use ($currentId)
return $er->createQueryBuilder('p')
->where('p.id != :idCurrent')
->setParameter('idCurrent', $currentId);
,
));
public function configureOptions(OptionsResolver $resolver)
$resolver->setDefaults(array(
'data_class' => Project::class,
));
【讨论】:
谢谢。您的回答很好,但一段时间后我找到了解决这种情况的最简单方法。 AbstractAdmin 有 getSubject() 方法。 很高兴知道,我必须承认我对奏鸣曲管理员不是很熟悉,我给了你一个更一般的答案,它在奏鸣曲上下文之外起作用。以上是关于Symfony sonata EntityType 编辑表单 - 选择 - 获取其他当前的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 2 - 为 EntityType 定义选定的值
Symfony - 使用重复的 EntityType 优化表单
预填充 EntityType 类型的 Symfony 表单的字段