0

私は単純なクラスを持っています:

User:
  id | login | password | desc

そしてこれで形成します。

どうすれば作成できますか-入力パスワードがnull(strlen == 0)の場合、モデルでは問題になりません。

今、私は関数保存のUser.class.phpにあります:

$this->setPassword(sha512($this->getPassword));
4

1 に答える 1

1

DBレベルで「NOTNULL」がないことを確認する必要があるため、空の値は通常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;
    }

}

もちろん、このコードはあなたへのヒントにすぎないので、改善されるかもしれません。

于 2012-05-13T09:57:13.790 に答える