你好,我很疯狂,试图将用户添加到数据库中。
当我添加行时:
$adduser = $this->Users->patchEntity($adduser, $this->request->getdata());
给我错误:
内部服务器错误[500]。
如果我对此行发表评论,那么该记录将不会保存。
我检查了表单,以防万一我没有正确放置所有数据库字段,但是没关系。我检查了。
我不知道怎么了。
public function add() {
$idepersonas = TableRegistry::get('Personas')->find('all')
->select(['Personas.id','Personas.nombre', 'Personas.primer_apellido', 'Personas.segundo_apellido'])
->orderAsc('Personas.nombre', 'Personas.primer_apellido');
$adduser = $this->Users->newEntity();
if($this->request->is('post')) {
debug($adduser);
debug($this->request->getdata());
$adduser = $this->Users->patchEntity($adduser, $this->request->getdata());
//debug($this->request->getdata());
if($this->Users->save($adduser)) {
$this->Flash->success('El usuario ha sido creado correctamente', [
'key' => 'positive',
'params' => ['nombre' => $adduser->nombre]
]);
$tabler = "users";
$idUser = $adduser->id;
return $this->redirect(['controller' => 'Imagenes', 'action' => 'add', 'idUser' => $idUser, 'tabler' => $tabler]);
}
else {
debug($adduser);
echo "No funciona";
$this->Flash->error(__('El usuario no pudo ser creado. Por favor, intentelo de nuevo.'));
}
}
$data = [
'idepersonas' => $idepersonas,
'adduser' => $adduser
];
$this->set($data);
}
说明:
如果以前的列表中不存在该用户,则无法注册,这是进行咨询$ idepersonas的原因,但我认为这并不重要,只是为了避免引起混淆。
最后我做了什么,而不是通过表单传递所有数据,而是使用以下命令将它们从一个传递到另一个:
$isData = $this->request->getdata();
...
$adduser->email = $isData['email'];
$adduser->password = $isData['password'];
...
直到我获得密码,当我通过密码时,即当我收到错误500时,我认为加密没有正确完成,我在User实体中拥有该密码:
protected function _setPassword($password) {
if (strlen($password) > 0) {
return (new DefaultPasswordHasher)->hash($password);
}
else {
$id_user = $this->properties['id'];
user = TableRegistry::get('Users')->recoverPassword($id_user);
return $user;
}
}
protected $_hidden = ['password'];