Php Sonata管理包-configureFormFields中的不同字段选项

Php Sonata管理包-configureFormFields中的不同字段选项,php,forms,symfony,mode,symfony-sonata,Php,Forms,Symfony,Mode,Symfony Sonata,根据您是在configureFormFields中创建新实体还是编辑现有实体,是否有可能将不同的字段添加到Sonata管理包表单中?我不确定这是否是最好的方法,但我使用以下方法完成了此操作: protected function configureFormFields(FormMapper $form) { // Add fields common to add AND edit... if ($this->getSubject()->getId() > 0)

根据您是在configureFormFields中创建新实体还是编辑现有实体,是否有可能将不同的字段添加到Sonata管理包表单中?

我不确定这是否是最好的方法,但我使用以下方法完成了此操作:

protected function configureFormFields(FormMapper $form)
{
    // Add fields common to add AND edit...

    if ($this->getSubject()->getId() > 0) {
        // Add fields only when editing an existing object
    }
}

显然,如果只想为新对象添加字段,也可以添加
else
条件。

这里是Officel文档推荐的一种更好的方法()

或者你可以:

if ($this->isCurrentRoute('create')) {
    $formMapper->add('name', TextType::class);
}

您最有可能想使用的是,对于嵌入式管理员,有没有办法做到同样的事情?我正在使用sonata_type_集合,并希望对其中一个子表字段执行相同的操作。Thanks@GBRocks根据我的经验,这是不可能的,主题引用与行无关(尤其是在保存时)
if ($this->isCurrentRoute('create')) {
    $formMapper->add('name', TextType::class);
}