【发布时间】:2018-08-14 12:09:43
【问题描述】:
这是我的变量$data的输出:
array(7) { [0]=> array(2) { ["name"]=> string(14) "form[username]" ["value"]=> string(1) "1" } [1]=> array(2) { ["name"]=> string(11) "form[email]" ["value"]=> string(7) "1@12.sw" } [2]=> array(2) { ["name"]=> string(15) "form[is_active]" ["value"]=> string(1) "1" } [3]=> array(2) { ["name"]=> string(26) "form[plainPassword][first]" ["value"]=> string(0) "" } [4]=> array(2) { ["name"]=> string(27) "form[plainPassword][second]" ["value"]=> string(0) "" } [5]=> array(2) { ["name"]=> string(8) "form[id]" ["value"]=> string(1) "9" } [6]=> array(2) { ["name"]=> string(12) "form[_token]" ["value"]=> string(43) "MdSCKxGkdFs2HPUSoM2vGidSRUmPgzZC3pZaW2wK2Rk" } }
我现在想使用实体管理器更新我的数据库中的数据:
$entityManager->persist($data);
$entityManager = $data->getDoctrine()->getManager();
$entityManager->flush();
$response = new Response();
$response->send();
但我收到错误消息:
EntityManager#persist() 期望参数 1 是一个实体对象, 给定 NULL。
【问题讨论】:
-
$data包含什么? -
它是像这样用 Ajax 创建的
var form = $(this).closest('form');var formData = form.serialize(); -
不,不是。那是Javascript代码,其他代码sn-p是PHP代码。您如何准确地在 PHP 代码中将值分配给
$data? -
Symfony 不会神奇地将请求正文转换为实体。因此,您不能将未修改的传入请求传递给实体管理器。查看传入数据的格式,您似乎已经有了一个 Symfony 表单类型,基于该类型呈现表单。处理请求时是否有特殊原因不重用该表单类型?
-
是的,显然您的
$data变量不包含实体。看看 xabbuh 的评论
标签: php symfony controller doctrine entitymanager