Symfony 中的自定义表单字段类型
Custom form field type in Symfony
我有一个带有数组字段数据(原则数组)的实体。我想为这个实体创建一个 symfony 表单,我想在其中包含这个字段。
所以,问题是:
有什么方法可以在 Symfony 中使用自定义类型作为表单字段吗?
这是表单域:
/**
* @var array
*
* @ORM\Column(name="dates", type="array")
*/
private $dates;
这是表单类型:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('dates') // i want to use ->add('dates','array') but type 'array' is not allowed
;
}
这是我要保存的数据:
$dates = array(
'birthday' => \DateTime('1995'),
'wedding' => \DateTime('2001'),
// and so on
)
只要没有内置数据类型,您应该添加自定义数据类型。使用可以进行数组<->json 转换的 DataTransformer 扩展简单的文本字段 (TextType) 就足够了。
假设您的自定义类型为 YourBundle\Form\Type\JSONArrayType
。要在您的表单中将其用作常规字段,您应该在您的捆绑配置中注册:
json_array_type.service:
class: YourBundle\Form\Type\JSONArrayType
tags:
- { name: form.type, alias: json_array_type }
然后您可以在您的表单类型中使用它,例如 $builder->add('dates', 'json_array_type')
有关详细信息,请参阅 How to Create a Custom Form Field Type
我有一个带有数组字段数据(原则数组)的实体。我想为这个实体创建一个 symfony 表单,我想在其中包含这个字段。
所以,问题是: 有什么方法可以在 Symfony 中使用自定义类型作为表单字段吗?
这是表单域:
/**
* @var array
*
* @ORM\Column(name="dates", type="array")
*/
private $dates;
这是表单类型:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('dates') // i want to use ->add('dates','array') but type 'array' is not allowed
;
}
这是我要保存的数据:
$dates = array(
'birthday' => \DateTime('1995'),
'wedding' => \DateTime('2001'),
// and so on
)
只要没有内置数据类型,您应该添加自定义数据类型。使用可以进行数组<->json 转换的 DataTransformer 扩展简单的文本字段 (TextType) 就足够了。
假设您的自定义类型为 YourBundle\Form\Type\JSONArrayType
。要在您的表单中将其用作常规字段,您应该在您的捆绑配置中注册:
json_array_type.service:
class: YourBundle\Form\Type\JSONArrayType
tags:
- { name: form.type, alias: json_array_type }
然后您可以在您的表单类型中使用它,例如 $builder->add('dates', 'json_array_type')
有关详细信息,请参阅 How to Create a Custom Form Field Type