【发布时间】:2013-03-09 23:51:29
【问题描述】:
我有一个审核表单,我可以在其中附加多个资源(审核有很多资源,一个资源仅附加到一个审核)。
表单在视图中很好地呈现,但在保存表单时,选定的资源未附加到数据库中的审核。
审核表:
>add('ressources', 'entity', array(
'class' => 'SpriMonitorBusinessBundle:Ressource',
'query_builder' => $this->em->getRepository('SpriMonitorBusinessBundle:Ressource')->getAvailableRessources(true),
'multiple'=>true
))
审计.orm.yml:
oneToMany:
ressources:
targetEntity: Ressource
mappedBy: audit
Ressource.orm.yml:
manyToOne:
audit:
targetEntity: Audit
inversedBy: ressources
joinColumn:
name: audit_id
referencedColumnName: id
注意:在资源表单上,当我选择审核时,它已正确保存
控制器:
public function newAction()
{
$em = $this->getDoctrine()->getEntityManager();
$item = AuditFactory::make();
$form = $this->createForm(new AuditType($em),$item);
$request = $this->get('request');
$session = $this->get('session');
if ('POST' == $request->getMethod()) {
try {
$this->validateForm($form,$request);
$em->persist($item);
$em->flush();
$message = $this->container->getParameter('form_submit_success');
$session->setFlash('success', $message);
$url = $this->generateUrl('Spri_audit_list');
return $this->redirect($url);
} catch (FormException $e) {
$session->setFlash('error', sprintf('Erreur Formulaire : "%s"',$e->getMessage()));
} catch (\Exception $e) {
die(var_dump($e->getMessage()));
$session->setFlash('error', sprintf('Erreur inconnue ! Contactez l\'ADMIN'.$e->getMessage()));
}
}
return $this->render('SpriAuditBundle:Audit:new.html.twig', array('form'=>$form->createView()));
}
protected function validateForm($form, $request)
{
$form->bind($request);
if (!$form->isValid()) {
$message = $this->container->getParameter('form_submit_error');
throw new FormException($message);
}
}
var_dump($item) 显示:
private 'slug' => null
private 'ressources' =>
object(Doctrine\Common\Collections\ArrayCollection)[4190]
private '_elements' =>
array
0 =>
object(Spri\MonitorBusinessBundle\Entity\Ressource)[3766]
...
privat...
有什么想法吗??
【问题讨论】:
-
您可以将您的控制器发布到您坚持并刷新实体管理器的位置吗?
-
如果您在持久化之前执行 var_dump($item),它是否将资源显示为子项?
-
我们还需要查看您的创建操作。
-
@KenHannel:请查看已编辑的问题!
-
@Lighthart:什么创建动作?
标签: php symfony orm doctrine-orm symfony-forms