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 爬取豆瓣电影相关处理
  • ¥15 手机淘宝抓清除消息接口
  • ¥15 C#无selenium
  • ¥15 LD衰减计算的结果过大
  • ¥15 用机器学习方法帮助保险公司预测哪些是欺诈行为
  • ¥15 计算300m以内的LD衰减
  • ¥15 数据爬取,python
  • ¥15 怎么看 cst中一个面的功率分布图,请说明详细步骤。类似下图
  • ¥15 为什么我的pycharm无法用pyqt6的QtWebEngine
  • ¥15 FOR循环语句显示查询超过300S错误怎么办