尝试在Cakephp 3.6中添加用户时出现内部错误500

时间:2019-03-04 20:54:33

标签: authentication cakephp-3.0 add

你好,我很疯狂,试图将用户添加到数据库中。

当我添加行时:

$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'];

0 个答案:

没有答案