这是我的阵法 $data
:
array(7) {
["form[username]"]=>
string(4) "test"
["form[email]"]=>
string(11) "test@123.sw"
["form[is_active]"]=>
string(1) "1"
["form[plainPassword][first]"]=>
string(0) ""
["form[plainPassword][second]"]=>
string(0) ""
["form[id]"]=>
string(1) "9"
["form[_token]"]=>
string(43) "A"
}
我将此数据存储到现有实体中 User
这样地:
$entity = $this->getDoctrine()->getRepository(User::class)->find($data['form[id]']);
$em = $this->getDoctrine()->getManager();
$entity->setUsername($data['form[username]']);
$entity->setEmail($data['form[email]']);
$em->flush();
这很管用!
但现在我实际上不想更新现有用户,我想创建一个新用户。这是我的方法:
$entity = new User();
$entity = $data;
$em = $this->getDoctrine()->getManager();
$entity->setUsername($data['form[username]']);
$entity->setEmail($data['form[email]']);
$em->flush();
我得到一个错误:
对数组的成员函数setusername()的调用
2条答案
按热度按时间93ze6v8z1#
建议使用symfony表单类型,而不是直接使用原始数据。这会让你免于噩梦。控制器中的newaction()和editaction()将使用相同的窗体类型。
我在下面给你举个例子:
窗体类型
控制器
这样,就不需要显式设置任何内容。自动处理和提交数据。
更多信息请点击此处:https://symfony.com/doc/current/best_practices/forms.html
yfjy0ee72#
删除
$entity = $data;
和持久实体。