Symfony2:我的Twig形式的观点不接受我的classe:表单的视图数据预计是标量类型

时间:2015-04-03 12:56:35

标签: forms symfony twig

我有一个与ConseillerRdp实体有关系的神经实体。该模式是一个组合者可以拥有一个或多个RDP,RDP实际上也是一些神经连接。

当我尝试通过表单将RDP与神秘主义者联系起来时,我收到了以下错误消息:

The form's view data is expected to be of type scalar, array or an 
instance of \ArrayAccess, but is an instance of class Nurun\Bundle
\RhBundle\Entity\Conseiller. You can avoid this error by setting the 
"data_class" option to "Nurun\Bundle\RhBundle\Entity\Conseiller" or by
 adding a view transformer that transforms an instance of class 
Nurun\Bundle\RhBundle\Entity\Conseiller to scalar, array or an instance 
of \ArrayAccess. 

我的控制器代码: public function editAction($ id,Request $ request){

    $em = $this->getDoctrine()->getManager();

    // On récupère le client $id
    $conseiller = $em->getRepository('NurunRhBundle:Conseiller')->find($id);
    $conseillerRdp = new ConseillerRdp();

    $conseillerRdp->setConseiller($conseiller);
    $today = new \DateTime();
    $conseillerRdp->setDateDebut($today);

    $form = $this->get('form.factory')->create(new ConseillerRdpType(), $conseillerRdp);

    if ($form->handleRequest($request)->isValid()) {
        $feuvert = $em->getRepository('NurunRhBundle:ConseillerRdp')->closeAllRdp($id);
        if ($feuvert)
        {
        $em = $this->getDoctrine()->getManager();
        $em->persist($conseillerRdp);
        $em->flush();   
        }


        $request->getSession()->getFlashBag()->add('notice', 'Affectation de RDP bien enregistrée.');

        return $this->redirect($this->generateUrl('nurun_rh_view', array('id' => $conseiller->getId())));
    }

    return $this->render('NurunRhBundle:ConseillerRdp:edit.html.twig', array(
                'form' => $form->createView(),
    ));
}

我的formType代码:

class ConseillerRdpType extends AbstractType
{
/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
         ->add('conseiller', 'text', array(
             'read_only' => true))   
        ->add('rdp', 'entity', array(
            'class' => 'NurunRhBundle:Conseiller',
             'multiple' => false,
             'required' => true))
        ->add('dateDebut', 'genemu_jquerydate', array('widget' => 'single_text'))
        ->add('save',      'submit')
        ;
}


/**
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Nurun\Bundle\RhBundle\Entity\ConseillerRdp'
    ));
}

/**
 * @return string
 */
public function getName()
{
    return 'nurun_bundle_rhbundle_conseillerRdp';
}

}

我的关系代码(在作者身份中):

/**
   * @ORM\OneToMany(targetEntity="Nurun\Bundle\RhBundle\Entity\ConseillerRdp", mappedBy="conseiller", cascade={"remove"})
*/
private $rdps;

我发现了一些其他帖子,但是在我的情况下,我无法理解发生了什么。 为什么告诉我将data_class设置为conseiller,而我将它传递给conseillerRdp实体? 我想要更新的实体是一个conseillerRdp而不是一个神圣的......

请有人有个主意吗?

0 个答案:

没有答案