在 symfony2 和 3 中扩展表单
Extend forms in symfony2 and 3
我想创建一个可以在 symfony2 和 symfony3 中使用的新表单类型。问题是它扩展了实体表单类型,我找不到创建 getParent() 函数的通用方法,因为在 symfony2 中就像:
public function getParent()
{
return 'entity';
}
在 symfony3 中:
public function getParent()
{
return EntityType::class;
}
有什么通用的方法吗,或者我需要创建两种不同的表单类型?
您可以从内核中读取版本,并且 return 父级适当地:
use Symfony\Component\HttpKernel\Kernel;
public function getParent()
{
if (Kernel::MAJOR_VERSION > 2) {
return EntityType::class;
} else {
return 'entity';
}
}
您可以检查 AbstractType
class 中的 getBlockPrefix()
方法是否存在,该方法在 Symfony 2.8 中引入:
if (method_exists('Symfony\Component\Form\AbstractType', 'getBlockPrefix')) {
return EntityType::class;
} else {
return 'entity';
}
我想创建一个可以在 symfony2 和 symfony3 中使用的新表单类型。问题是它扩展了实体表单类型,我找不到创建 getParent() 函数的通用方法,因为在 symfony2 中就像:
public function getParent()
{
return 'entity';
}
在 symfony3 中:
public function getParent()
{
return EntityType::class;
}
有什么通用的方法吗,或者我需要创建两种不同的表单类型?
您可以从内核中读取版本,并且 return 父级适当地:
use Symfony\Component\HttpKernel\Kernel;
public function getParent()
{
if (Kernel::MAJOR_VERSION > 2) {
return EntityType::class;
} else {
return 'entity';
}
}
您可以检查 AbstractType
class 中的 getBlockPrefix()
方法是否存在,该方法在 Symfony 2.8 中引入:
if (method_exists('Symfony\Component\Form\AbstractType', 'getBlockPrefix')) {
return EntityType::class;
} else {
return 'entity';
}