Внутренняя ошибка 500 при попытке добавить пользователя в Cakephp 3.6 - PullRequest
0 голосов
/ 04 марта 2019

Здравствуйте, я схожу с ума, пытаясь добавить пользователя в базу данных.

Когда я добавляю строку:

$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, я думаю, что шифрование не делает этогоправильно, у меня в сущности пользователя:

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