doufu9145 2012-06-04 13:34 采纳率: 0%
浏览 48
已采纳

在symfony2中的非对象上调用成员函数setName()

I am trying to edit a form i get the form with existing values correctly but when i try to put new data in fields and submit the form i get an error of Call to a member function setName() on a non-object

My controller method is

public function editAction(Request $request){
$request = Request::createFromGlobals();
    $group_id = $request->query->get('id');
    $em = $this->getDoctrine()->getEntityManager();
    $patent_group = $em->getRepository('MunichInnovationGroupBundle:PmPatentgroups')->find($group_id);
    //echo '<pre>';
    //print_r($patent_group);
    //echo '</pre>';
    $form = $this->createForm(new PatentgroupType(), $patent_group);
    if ($request->getMethod() == 'POST') {
        $form->bindRequest($request);
        $name = $form["name"]->getData();
        $description = $form["description"]->getData();
        $patent_group->setName($name);
        $patent_group->setDescription($description);
        $em->flush();
        return $this->redirect($this->generateUrl('MunichInnovationGroupBundle_portfolio'));
    }
    return $this->render('MunichInnovationGroupBundle:Patentgroups:edit.html.twig', array(
            'form' => $form->createView(),
            'group_id' => $group_id
    ));
}

This is what I get in $patent_group

 MunichInnovationGroup\Bundle\Entity\PmPatentgroups Object
(
[id:MunichInnovationGroup\Bundle\Entity\PmPatentgroups:private] => c3e0eb98-ada5-11e1-96a5-9787dec335c2
[name:MunichInnovationGroup\Bundle\Entity\PmPatentgroups:private] => Zoha Ali khan
[description:MunichInnovationGroup\Bundle\Entity\PmPatentgroups:private] => No Description Provided for this Group
[portfolio_id:MunichInnovationGroup\Bundle\Entity\PmPatentgroups:private] => Proxies\MunichInnovationGroupBundleEntityPmPortfoliosProxy Object
    (
        [_entityPersister:Proxies\MunichInnovationGroupBundleEntityPmPortfoliosProxy:private] => Doctrine\ORM\Persisters\BasicEntityPersister Object
            (
                [_class:protected] => Doctrine\ORM\Mapping\ClassMetadata Object
                    (
                        [reflFields] => Array
                            (
                                [id] => ReflectionProperty Object
                                    (
                                        [name] => id
                                        [class] => MunichInnovationGroup\Bundle\Entity\PmPortfolios
                                    )

                                [portfolioName] => ReflectionProperty Object
                                    (
                                        [name] => portfolioName
                                        [class] => MunichInnovationGroup\Bundle\Entity\PmPortfolios
                                    )

What i am doing wrong here as i am getting this error

Call to a member function setName() on a non-object  

Any Ideas? Thanks in advance

  • 写回答

2条回答 默认 最新

  • donglei_0507 2012-06-04 14:39
    关注

    My Fix: Kindly comment whether it is a good solution or not

    public function editAction(Request $request){
        $request = Request::createFromGlobals();
        $group_id = $request->query->get('id');
        $em = $this->getDoctrine()->getEntityManager();
        $patentgroup = $em->getRepository('MunichInnovationGroupBundle:PmPatentgroups')->findOneBy(array('id'=>$group_id));
        $form = $this->createForm(new PatentgroupType(), $patentgroup);
        if ($request->getMethod() == 'POST') {
            $form->bindRequest($request);
            $group_id = $form["id"]->getData();
            $name = $form["name"]->getData();
            $description = $form["description"]->getData();
            $em = $this->getDoctrine()->getEntityManager();
            $patentgroup = $em->getRepository('MunichInnovationGroupBundle:PmPatentgroups')->findOneBy(array('id'=>$group_id));
            $patentgroup->setName($name);
            $patentgroup->setDescription($description);
            $em->flush();
            return $this->redirect($this->generateUrl('MunichInnovationGroupBundle_portfolio'));
        }
        return $this->render('MunichInnovationGroupBundle:Patentgroups:edit.html.twig', array(
                'form' => $form->createView(),
                'group_id' => $group_id
        ));
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?