0

私のKohanaビューファイルは次のようになります:

 <?=Form::open('/signup/user');?>
    <?=Form::label('username', 'Username: ')?>
    <?=Form::input('username', isset($username)?$username:''); ?>
    <br />
    <?=Form::label('password', 'Password: ')?>
    <?=Form::password('password', ''); ?>
    <br />
    <?=Form::label('confirm', 'Re-enter Password: ')?>
    <?=Form::password('confirm', ''); ?>
    <br />
    <?=Form::label('email', 'Email: ')?>
    <?=Form::input('email', ''); ?>
    <?=Form::submit('submit', "Submit"); ?>
<?=Form::close()?>

そして私のコントローラー:

public function action_user(){
    if($this->request->method() == "POST"){
        $this->template->set('username', $this->request->post('username'));
        $user = ORM::factory('user');
        try{
            $user->values($_POST)->save();
        }catch(ORM_Validation_Exception $e){
            var_dump($e->errors());
        }
    }
}

問題は、後者が空のパスワードまたはパスワードが一致しないフォームを受け入れ、それをデータベースに書き込むことです。ユーザー名とメール フィールドの検証は正常に機能しますが、パスワード フィールドを検証する方法がわかりません。

4

1 に答える 1

0

あい、間違えた。のドキュメントを読んだ後Model_Auth_User、 rules() メソッドでこれを書きました:

ユーザー モデルのルール。パスワードは設定時に常にハッシュであるため、コントローラーで追加の not_empty ルールを実行して、空の文字列をハッシュしていないことを確認する必要があります。パスワード ルールは、モデルの外部で、またはモデル ヘルパー メソッドを使用して適用する必要があります。

空の文字列をハッシュしても、空ではないハッシュが返されます。そのため、モデルの外側、より具体的にはコントローラー側でチェックを行う必要があります。

于 2012-06-29T12:54:41.270 に答える