【发布时间】:2016-02-23 12:47:21
【问题描述】:
我有下一个关系:
Presupuesto: oneToMany with Revision
Revision: oneToMany with Capitulo
Capitulo: oneToMany with Requisito
Requisito: oneToMany with Articulo
我有一个嵌入了这些实体和“addTagForm”集的表单。问题是,当我提交表单时,除了 Revision 和 Capitulo 关联为空之外,所有内容都正确关联。
以下是关于这两个实体的最相关信息:
修订.php
/**
* @ORM\OneToMany(targetEntity="CeiferIT\ComercialBundle\Entity\Capitulo", mappedBy="revision", cascade={"persist"}, orphanRemoval=true)
*/
protected $capitulos;
/**
* @param \CeiferIT\ComercialBundle\Entity\Capitulo $capitulo
*
* @return Revision
*/
public function addCapitulo(\CeiferIT\ComercialBundle\Entity\Capitulo $capitulo)
{
$capitulo->setRevision($this);
$this->capitulos[] = $capitulo;
return $this;
}
/**
* @param \CeiferIT\ComercialBundle\Entity\Capitulo $capitulo
*/
public function removeCapitulo(\CeiferIT\ComercialBundle\Entity\Capitulo $capitulo)
{
$this->capitulos->removeElement($capitulo);
}
/**
* @return \Doctrine\Common\Collections\Collection
*/
public function getCapitulos()
{
return $this->capitulos;
}
Capitulo.php
/**
* @ORM\ManyToOne(targetEntity="CeiferIT\ComercialBundle\Entity\Revision", inversedBy="capitulos", cascade={"persist"})
* @ORM\JoinColumn(name="revision_id", referencedColumnName="id")
*/
private $revision;
/**
* @param \CeiferIT\ComercialBundle\Entity\Revision $revision
*
* @return Capitulo
*/
public function setRevision(\CeiferIT\ComercialBundle\Entity\Revision $revision = null)
{
$this->revision = $revision;
return $this;
}
/**
* @return \CeiferIT\ComercialBundle\Entity\Revision
*/
public function getRevision()
{
return $this->revision;
}
nuevo.html.twig
{{ form_start(formulario) }}
//some code..
{% include 'ComercialBundle:Presupuesto:listaRevisiones.html.twig' %}
//some code..
{{ form_end(formulario) }}
listaRevisiones.html.twig
{% macro information_prototype(revision) %}
{% if form_errors(revision.total) %}
{{ form_widget(revision.total, {'attr': {'class': 'form-control totalrevision error'}}) }}
{% else %}
{{ form_widget(revision.total, {'attr': {'class': 'form-control totalrevision'}}) }}
{% endif %}
{% include 'ComercialBundle:Presupuesto:listacapitulos.html.twig' %}
{% endmacro %}
<div class="ibox product-box active primerarevision" data-prototype="{{ _self.information_prototype(formulario.revisiones.vars.prototype)|e}}">
{% for revision in formulario.revisiones %}
{{ _self.information_prototype(revision)}}
{% endfor %}
</div>
我不明白为什么revision_id 为空。有任何想法吗?谢谢
【问题讨论】:
-
您能否在您的控制器中检查数据是否在表单中实际设置正确。所以这将是一个
var_dump(),类似于:$form->getData()->getRevisions()->getCapitulos();。这样我们就可以判断出问题出在表单声明中,还是出在 Doctrine 中。 -
是的,当我转储($form->getData()) 时,出现 Capitulo,但其修订属性为空
标签: php forms symfony doctrine