我有一个带有数组字段数据(doctrine数组)的实体。我想为这个实体创建一个symfony表单,我想在其中包含这个字段。
所以,问题是: 有没有办法在Symfony中使用自定义类型作为表单字段?
这是表单字段:
/**
* @var array
*
* @ORM\Column(name="dates", type="array")
*/
private $dates;
这是formType:
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
)
答案 0 :(得分:1)
如果没有内置数据类型,您应该添加自定义数据类型。使用DataTransformer扩展简单文本字段(TextType)就足够了,它可以进行数组< - > json转换。
我们假设您的自定义类型为YourBundle\Form\Type\JSONArrayType
。要在表单中将其用作常规字段,您应该在bundle config中注册:
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