我正在建立一个CRM系统,我遇到了一个我无法解决的奇怪问题。当我尝试创建一个新的CustomerCase实体时,我想为它分配一个CaseState实体,所以这就是我在CustomerCaseController.php的createAction中所做的:
$caseStateId = $request->request->get('caseState_id');
$caseState = $this->getDoctrine()->getManager()->getRepository('HSWAshaBundle:CaseState')->findOneById($caseStateId);
$entity = new CustomerCase();
$entity->setCaseState($caseState);
...... etc.....
在 setCaseState 方法之前,一切正常。运行setCaseState后,我收到以下错误:
Catchable Fatal Error: Argument 1 passed to HSW\AshaBundle\Entity\CustomerCase::setCaseState() must be an instance of HSW\AshaBundle\Entity\CaseState, null given, called in /home/webuser/Symfony/vendor/symfony/symfony/src/Symfony/Component/Form/Util/PropertyPath.php on line 538 and defined in /home/webuser/Symfony/src/HSW/AshaBundle/Entity/CustomerCase.php line 843
奇怪的是$ caseState确实是一个CaseState对象(因为例如$ caseState-> getName()工作并为我提供了所选CaseState的正确名称)。 当我使用setCaseState方法时,由于某些令人兴奋的原因,它只是变为空。如果我执行$ entity-> setCaseState($ customerStateObject-> getId()),我会收到相同的错误消息,但这次null会更改为整数。
CustomerCase与CaseState有很多关系。
如果我使用formBuilder的add()方法并跳过所有这些手动工作,这可以正常工作,但由于我使用非常具体的自动填充jQuery下拉列表从嵌套树结构中选择CaseState,我不得不手动添加下拉列表并使用$ request-> request-> get()。
进行阅读我已经和这部分战斗了近三天了,非常感谢我能得到的每一个帮助!
答案 0 :(得分:3)
最后我开始工作了!原因是$ request缺少一些参数,因为twig模板缺少form_rest(表单)。添加之后,一切都开始起作用了。谢谢!