在symfony2和3中扩展表单

时间:2016-04-18 19:35:12

标签: symfony-forms symfony

我想创建一个可以在symfony2和symfony3中使用的新表单类型。问题是它扩展了实体表单类型,我找不到创建getParent()函数的常用方法,因为在symfony2中就像:

public function getParent()
{
   return 'entity';
}

和symfony3:

public function getParent()
{
   return EntityType::class;
}

有什么办法以常见的方式做到这一点,或者我需要创建两种不同的表单类型?

2 个答案:

答案 0 :(得分:1)

您可以从内核中读取版本,并适当地返回父级:

use Symfony\Component\HttpKernel\Kernel;

public function getParent() 
{
    if (Kernel::MAJOR_VERSION > 2) {
        return EntityType::class;
    } else {
        return 'entity';
    }
}

答案 1 :(得分:0)

您可以检查Symfony 2.8中引入的getBlockPrefix()类中的AbstractType方法是否存在:

if (method_exists('Symfony\Component\Form\AbstractType', 'getBlockPrefix')) {
    return EntityType::class;
} else {
    return 'entity';
}