CakePHP访问表格中的传递表格数据afterSave()

时间:2015-10-27 17:28:54

标签: api cakephp models crud controllers

解决了!我在我的Entity类中创建了一个$ password属性,我认为我需要这样做。密码字段通过整个请求添加到实体。下面发布的代码都不得更改。

我正在使用friendsofcake / Crud来构建REST api。当我保存我的用户模型时,我有一个afterSave()事件,它执行密码salting和散列。发送到我的UsersController的POST数据:add()方法包含['密码']参数,但我的UsersTable有[' hash',#39; salt']字段。

基本上,我需要知道POST ['密码']参数是否以及在哪里,以及它是否在UsersTable afterSave()方法中可用。否则,我的系统是散列和盐化空密码字符串!

我是CakePHP的新手,无法找到3。*。

的简单答案

这是我的UsersTable类中的afterSave()方法。

/**
 * Updates Meta information after being created.
 */
public function afterSave(Event $event, Entity $entity, ArrayObject $options)
{
   if($entity->returnAfterSave) return;

   // update the public id
   if(empty($entity->public_id))
   {
     $hashids = new Hashids(static::HASH_SALT, static::HASH_LENGTH);
     $entity->public_id = $hashids->encode($entity->id);
   }

   // generate a password salt
   if(empty($entity->salt))
   {
     $entity->generateSalt();
   }

   // salt and hash the password
   if(empty($entity->hash))
   {
     // NOTE: I figured since the form data
     // is loaded into the entity, I created a $password property
     // in my User Entity class. This assumption may be the problem??
     // Update: It was a bad assumption. Removing said property solved issue.
     $entity->hashPassword();
   }

   // save the changes
   $entity->returnAfterSave = true;
   $this->save($entity);
}

此外,我了解此代码无法正确保存任何新密码,我会在创建正常工作后更新密码更改代码。

0 个答案:

没有答案