我有两个实体,Registro和RegistroProfesional。 一个Registro有许多RegistroProfesional。 (一对多)。
在表单中,我希望第一个RegistroProfesional出现,但它给出了错误“必须管理传递给选择字段的实体。可能它们仍存在于实体管理器中?”
这是我在formtype中的字段:
$builder->add('registroProfesionales','collection', array(
'type'=> new RegistroProfesionalType(),
'cascade_validation' => true,
'allow_delete' => true,
'allow_add' => true,
'prototype' => true,
'prototype_name' => '__registro_profesionales__',
'label' => false
))
在我的控制器中:
$entity = new Registro();
$registroProfesional = new RegistroProfesional();
$entity->addRegistroProfesionale($registroProfesional); // Here add the first RegistroProfesional
$flow = $this->get('biobanco.form.flow.crearRegistro');
$flow->bind($entity);
$form = $flow->createForm();
if ($flow->isValid($form)) {
$flow->saveCurrentStepData($form);
if ($flow->nextStep()) {
// form for the next step
$form = $flow->createForm();
} else {
//dump($form,$entity);die();
// flow finished
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
$flow->reset(); // remove step data from the session
$this->enviarCorreo($entity->getId(), 'REGISTRO');
return $this->render('BiobancoBundle:Registro:realizado.publico.html.twig');
}
}
查看:
{% for rp in form.registroProfesionales %}
<div class="col-sm-6 col-xs-12">
<label>Nombre</label>
{{ form_widget(rp.nombre) }}
{% if form_errors(rp.nombre) is not empty %}
<div class="alert alert-danger alert_form alert-dismissible fade in" role="alert">
{{ form_errors(rp.nombre) }}
</div>
{% endif %}
</div>
<div class="col-sm-6 col-xs-12">
<label>Primer Apellido</label>
{{ form_widget(rp.apellido1) }}
{% if form_errors(rp.apellido1) is not empty %}
<div class="alert alert-danger alert_form alert-dismissible fade in" role="alert">
{{ form_errors(rp.apellido1) }}
</div>
{% endif %}
</div>
<div class="col-sm-6 col-xs-12">
<label>Segundo Apellido</label>
{{ form_widget(rp.apellido2) }}
{% if form_errors(rp.apellido2) is not empty %}
<div class="alert alert-danger alert_form alert-dismissible fade in" role="alert">
{{ form_errors(rp.apellido2) }}
</div>
{% endif %}
</div>
<div class="col-sm-6 col-xs-12">
<label>Email</label>
{{ form_widget(rp.email) }}
{% if form_errors(rp.email) is not empty %}
<div class="alert alert-danger alert_form alert-dismissible fade in" role="alert">
{{ form_errors(rp.email) }}
</div>
{% endif %}
</div>
{% endfor %}
问题出在哪里?
答案 0 :(得分:1)
问题很可能不在您列出的代码中。
我会说你在A
或$form = $flow->createForm();
本身就有了一些东西。显然,你已经找到了某种选择字段(可能是RegistroProfesionalType
,即通常的学说关系),并且在这个字段属性上映射的值还有一个尚未保留的值。