标签:doctrine-orm zend-framework2 zend-form php
我正在使用AnnotationForms,并且将本教程中的标准编辑操作更改为使用Annotation而不是标准表单.
一切正常,除了$form-> bind()不填写值.表单字段保留为空.
我检查了应该绑定的变量,它已设置并且看起来不错.
这是我的动作:
$id = (int)$this->getEvent()->getRouteMatch()->getParam('id');
if (!$id) {
return $this->redirect()->toRoute('album', array('action'=>'add'));
}
$album = $this->getEntityManager()->find('Album\Entity\Album', $id);
$builder = new AnnotationBuilder();
$form = $builder->createForm(new \Album\Entity\Album());
$form->add(new \MyVendor\Form\MyFieldset());
$form->setBindOnValidate(false);
$form->bind($album);
解决方法:
好吧,这很简单!
诀窍是将您的对象转换为数组,并使用setData()而不是bind.
我找到了解决方案提示here.
您仍然需要bind()来保存更改.如果您将其保留,则不会发生任何错误,但也不会保存它.
$album = $this->getEntityManager()->find('Album\Entity\Album', $id);
...
$form->bind($album);
$form->setData($album->getArrayCopy());
标签:doctrine-orm,zend-framework2,zend-form,php 来源: https://codeday.me/bug/20191031/1976016.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。