0
我有這個表單生成器:Symfony2,驗證嵌入和非嵌入形式具有相同的參數和不同的結果?
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('task', 'text', array('label' => 'Task'))
->add('dueDate', 'date', array('label' => 'Date', 'format' => 'ddMMMMyyyy'))
->add('category', 'entity', array('required' => true, 'multiple' => true, 'class' => 'AcmeTaskBundle:Category', 'query_builder' => function($repository) { return $repository->createQueryBuilder('c')->orderBy('c.id', 'ASC'); },))
->add('save', 'submit', array('label' => 'Send'));
}
和它的作品的成功與此控制器:
if($form->isValid())
{
$this->get('session')->getFlashBag()->add(
'success',
'Task successfuly added'
);
$em = $this->getDoctrine()->getManager();
foreach($form->get('category')->getData() as $cat)
{
$task->removeCategory($cat);
$task->addCategory($cat);
}
$em->persist($task);
try {
$em->flush();
} catch (\PDOException $e) {
// sth
}
}
但
如果我試圖嵌入我的字段類別這樣的形式:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('task', 'text', array('label' => 'Task'))
->add('dueDate', 'date', array('label' => 'Date', 'format' => 'ddMMMMyyyy'))
->add('category', new CategoryType())
->add('save', 'submit', array('label' => 'Send'));
}
其中CategoryType類似於:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
//'data_class' => 'Acme\TaskBundle\Entity\Category',
'csrf_protection' => true,
));
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', 'entity', array(
'class' => 'AcmeTaskBundle:Category',
'query_builder' => function($repository) { return $repository->createQueryBuilder('c')->orderBy('c.id', 'ASC'); },
//'property' => 'name',
'multiple' => true,
'required' => true,
));
}
它返回給定類別expected,ArrayCollection的Exception實例。 爲什麼「相同」表格只有在沒有嵌入的情況下才能使用?
我使用多對多的關係。許多任務都不是一個類別。 –
沒關係。你有(一|多)對多關係。你有很多種類。 –
是的,這是真的。我會嘗試一下,現在我無法訪問我的電腦,我的文件在哪裏。那麼我會給你提供的信息。 –