首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ZF2 + Doctrine2 -表单和绑定实体- Params Null

ZF2 + Doctrine2 -表单和绑定实体- Params Null
EN

Stack Overflow用户
提问于 2013-07-24 22:32:22
回答 1查看 2.1K关注 0票数 1

在处理我的一个ZF2控制器时,我得到了以下错误:

代码语言:javascript
运行
复制
Doctrine\DBAL\DBALException
File: /var/www/microweb2/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:47
Message: An exception occurred while executing 'INSERT INTO quotes (name, email, phone_number, budget, content, date_posted, service_id) VALUES (?, ?, ?, ?, ?, ?, ?)' with params [null, null, null, null, null, null, null]:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null

嗯,这似乎是一个相当基本的错误,但我找不到解决办法。这个过程是这样的:我创建我的表单来显示它,然后用一个实体Application\Entity\Quote绑定它。然后我用DoctrineHydrator设置了我的消火栓。如果请求是POST,则使用请求值设置表单值,并使用InputFilter验证它们。不幸的是,如果isValid()返回true,DB返回错误..。为什么这些值是空的?

这是我的控制器代码:http://pastebin.com/JVK5xE9r

这是我的实体:http://pastebin.com/NhtaBNW9

这是我的AbstractEntityhttp://pastebin.com/s4L7Cquu

这是我的表格:http://pastebin.com/t7Kmzfk5

这是我的AbstractFormhttp://pastebin.com/36WeyKBf

有太多的代码不能包含在问题中。

get()方法适用于实体,set()也适用于实体。但这是我唯一的问题!所以我想知道为什么。

如果有人能告诉我为什么不起作用,那就太好了!

EN

回答 1

Stack Overflow用户

发布于 2013-07-25 02:32:57

啊,我想我得到了你现在面对的,你所做的

代码语言:javascript
运行
复制
 $quote = new \Application\Entity\Quote();

然后你就用

代码语言:javascript
运行
复制
$form->bind($quote);

因此,在为$quote创建一个新对象时,您将得到空值。在你使用的地方

代码语言:javascript
运行
复制
 $form->bind($quote);

该函数假定$quote (object)中已经存在值。实践中,Bind()通常用于编辑某种形式。

因此,如果您要添加某些内容,您必须要做、获取/设置或使用exchangearray(),或者w/e在您看来是可以的。但是,如果您要去编辑,那么您必须获得Id并执行如下操作

代码语言:javascript
运行
复制
 $quote=$em(this is GetEntityManagerObject)->getRepository->find($id);

然后使用bind()。使用这种方法,您不需要执行$quote =新的$quote

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17845959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档