我有一个博客实体,应该有一个民意调查实体和每个民意调查实体有许多选择实体关联到它。我试图为博客创建一个"添加/编辑投票"表单。在该表单中,除了Poll表单字段之外,我还希望有一个允许您添加选择的字段(每个字段都有一个简单的文本字段)。我有麻烦弄清楚我应该如何编码这个,使它工作良好。PollType表单看起来像这样:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title', 'text');
$builder->add('choices', 'collection',
array(
'label_attr' => array(
'style' => 'vertical-align: top;'
),
'type' => 'text',
'required' => false,
'allow_add' => true,
'allow_delete' => true,
'delete_empty' => true,
'attr' => array(
'style' => 'display: inline-block; margin: 0 0 20px 20px; width: 200px;'
)));
$builder->add('description', 'textarea', array('attr' => array('rows' => 6)));
$builder->add('save', 'submit', array('label' => 'Create Poll'));
$builder->getForm();
}
原来我有'type' => new ChoiceType(),其中ChoiceType为:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title', 'text');
}
但是我不得不删除所有这些,因为"变量"扩展"不存在于bootstrap_3_layout.html。"树枝"错误,我找不到任何解决方案。我将类型更改为文本,但现在我对如何从每个"choices"字段收集数据,将其持久化到choices实体,并将所有这些数据与新的Poll(可能尚未插入,因此我没有ID可以添加到choices ->pollID)相关联感到困惑。是否有一种标准的方法来做这种事情,我遗漏了?
如果您有Poll实体和Choice实体,那么它看起来像这样:
$builder->add('choice', 'entity', array(
'class' => 'AcmeHelloBundle:Choice',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('c')
->orderBy('choice.name', 'ASC');
},
));
你的实体必须有OneToMany或manyomany关联。
关于实体字段类型的更多信息