我有简单的类:
User:
id | login | password | desc
并以此形成。
我该怎么做 - 如果输入密码为空(strlen == 0),那么在模型中并不重要。
现在我在 User.class.php 中保存了函数:
$this->setPassword(sha512($this->getPassword));
我有简单的类:
User:
id | login | password | desc
并以此形成。
我该怎么做 - 如果输入密码为空(strlen == 0),那么在模型中并不重要。
现在我在 User.class.php 中保存了函数:
$this->setPassword(sha512($this->getPassword));
您必须确保在 DB 级别上没有“NOT NULL”,因此 ORM 通常会忽略空值。
通过自定义函数更改给定密码有 2 种可能性,因此我将给您一些简单的示例。
1)在你的模型文件中(我猜你有教义或推进?!):
/**
* via object's event handler
*/
preSave(){
if(strlen($this->getPassword()) > 0){
$this->setPassword(sha512($this->getPassword()));
}
}
2)甚至作为表单验证器:
/**
* custom validator
*/
class myValidatorOldPassword extends sfValidatorBase{
/**
* Clean and validate user input
*
* @param mixed $value Value of form input
* @return mixed Value
*/
protected function doClean($value)
{
// trim is not needed
$clean = (string) $value;
// password is ok?
if (strlen($clean) > 0)
{
return sha512($clean);
}
// Throw error - if you want
// throw new sfValidatorError($this, 'invalid', array('value' => $value));
// or return empty value
return $clean;
}
}
当然,此代码可能会有所改进,因为它只是对您的提示。