2

モデル「User」を継承するモデルの1つ(「CustomUser」)に属性を追加しようとしています。

この属性を「createUser」の形式で検証パスワードフィールドとして使用したいと思います。「パスワード」フィールドが1つしかないDBを変更できないため、仮想属性を使用したいと思います。

しかし、フォームを含むビューを取得しようとすると、次のエラーが表示されます。

プロパティ「User.password_verification」が定義されていません。

これは、エラーが発生した行です。

echo $form->labelEx($user,'password_verification');    
echo $form->textField($user,'password_verification',array('size'=>30,'maxlength'=>40));

私のUser.php:

class User extends CActiveRecord { 
... 

public function rules(){        
  return array(
    array('username, password, email', 'required'),             
    array('created_by', 'numerical', 'integerOnly'=>true),
    array('username, email', 'length', 'max'=>255),
    array('password', 'length', 'max'=>32),
    array('valid_from, valid_until, added_on', 'safe'),             
    array('username, email', 'unique'),
    array('id, type, username, password, email, valid_from, valid_until, 
    added_on,created_by','safe','on'=>'search'),
  );
...
}

私のCustomUser.php

class CustomUser extends User
{
    public $password_verification;

    public function rules()
    {
        $newRules = array(
                array('password_verification', 'required'),
                array('password_verification', 'length', 'max' => 32),
                array('password', 'compare', 'compareAttribute' => 'password_verification'),
                array('password_verification', 'safe', 'on' => 'search'),
        );
        return array_merge(User::model()->rules(), $newRules);
    }
}

私のrules()機能に問題があると思いますか?何が問題になるのか、何か考えがありますか?

4

3 に答える 3

0

次のように定義します。

class User extends CActiveRecord { 

 $password_verification

 ....

次に、これをActive Recordの属性として機能するパブリックプロパティとして定義しているため、モデルはこの属性にアクセスできます。

于 2012-11-14T13:17:47.827 に答える
0

エラー

プロパティ「User.password_verification」が定義されていません

Userモデルをビューに渡すと言っていますが、$password_verificationプロパティはCustomUserモデルにのみ存在します。

于 2012-11-14T13:46:34.287 に答える
0

回答ありがとうございます。

最後に、私がした大きな間違いでした...-__-

ビューで CustomUser の代わりに User を使用しました (私は actionCreate に集中していましたが、actionIndex() を忘れていました...)

ごめん。

良い一日を過ごしてください

マイケル

于 2012-11-15T10:12:20.477 に答える