假设我有一个Post实体,它有$title字段(数组类型),我想允许用户用多种语言编写帖子的标题
/**
* Post
*
* @ORM'Table(name="posts")
* @ORM'Entity
*/
class Post
{
/**
* @var integer
*
* @ORM'Column(name="id", type="integer")
* @ORM'Id
* @ORM'GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var array
*
* @ORM'Column(name="title", type="array", nullable=true)
*/
protected $title;
}
当用户想要提交新帖子时,我如何创建生成这些字段的表单类型?
<input type="text" name="title[en]" />
<input type="text" name="title[fr]" />
您必须为表单创建一个子类型:
class TitleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('en')
->add('fr');
}
public function getName()
{
return 'form_type';
}
}
然后你可以在你的主类型中添加这个子类型:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', new TitleType());
}