douduan5753 2015-07-20 23:35
浏览 63
已采纳

可捕获的致命错误:symfony2

i'm new in symfony2 and started a simple project of symblog to create a crud of Posts and comments, when i created a crud of comments everything gone fine, but now i have to persist, merge and remove my posts and i have this error:

Catchable Fatal Error: Argument 1 passed to NoticiaBundle\Repository\NoticiaRepository::adicionar() must be an instance of Proxies__CG__\NoticiaBundle\Entity\Noticia, instance of NoticiaBundle\Entity\Noticia given, called in C:\Desenvolvimento\wamp\www\myproject\src\NoticiaBundle\Controller\NoticiaController.php on line 49 and defined

Controller Persist Function:

/**
 * @Route("/cadastrar_noticia", name="_cadastrar_noticia")
 * @Template()
 */
public function cadastrarAction() {
    $noticia = new Noticia();
    $request = $this->getRequest();
    $form = $this->createForm(new NoticiaType(), $noticia);
    $form->handleRequest($request);

    if ($form->isValid()) {
        try {
            $noticia = $form->getData();

            $noticiaRepository = $this->getDoctrine()->getRepository('NoticiaBundle:Noticia');
            $noticiaRepository->adicionar($noticia);

            $this->addFlash('success', 'Noticia cadastrada com sucesso');

            return $this->redirectToRoute('_imagem_raias_index');
        } catch (Exception $ex) {
            echo $ex->getMessage();
        }
    }

    return array("form" => $form->createView());
}

Persist repository

 public function adicionar(Noticia $noticia) {

    $this->_em->persist($noticia);
    $this->_em->flush();
    return true;

}

And my FormType

<?php

namespace NoticiaBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class NoticiaType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('titulo',null, array('attr' => array('class' => 'form-control'),
                'label_attr' => array('class' => 'control-label col-lg-2')
            ))
            ->add('imagem',null, array('attr' => array('class' => 'form-control'),
                'label_attr' => array('class' => 'control-label col-lg-2')
            ))
            ->add('noticia','textarea', array('attr' => array('class' => 'form-control', 'rows' => 15),
                'label_attr' => array('class' => 'control-label col-lg-2')
            ))
            ->add('tags',null, array('attr' => array('class' => 'form-control'),
                'label_attr' => array('class' => 'control-label col-lg-2')
            ))
            ->add('salvar', 'submit', array('attr' => array('class' => 'btn btn-primary pull-right')));
    }

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

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

Anyone can help me??

  • 写回答

1条回答 默认 最新

  • douyinjiao9351 2015-07-20 23:36
    关注

    In your Repository where you defined adicionar, check your use statement. You need to make it refer to the actual model, not the proxy.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化