ホームページ > バックエンド開発 > PHPチュートリアル > 自己写的yii 独立验证器不能使用

自己写的yii 独立验证器不能使用

WBOY
リリース: 2016-06-06 20:20:08
オリジナル
1269 人が閲覧しました

namespace app\models;

use Yii;
use yii\base\Model;

class RegisterForm extends Model
{

1

2

3

4

<code>public $email;

public $password;

public $password_repeat;

</code>

ログイン後にコピー
ログイン後にコピー

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

<code>public function rules()

{

    return [

        [['email', 'password', 'password_repeat'], 'required'],

        ['email', 'email'],

        //['email', 'unique', 'targetClass' => '', 'message' => '邮箱名已存在。'],

        [['password', 'password_repeat'], 'string', 'length' => [6, 20]],

        ['password', 'checkPassword'],

        ['password_repeat','compare','compareAttribute' =>'password','message'=>'两次输入的密码不一致。'],

    ];

}

 

public function register()

{

    //处理一些东西

    //注册相关的

    return false;

}

 

public function attributeLabels()

{

    return [

        'email' => '邮箱',

        'password' => '密码',

        'password_repeat' => '重复密码',

    ];

}

 

public function checkPassword($attribute, $params)

{

    if (!ctype_alnum($this->$attribute)) {

        $this->addError($attribute, '必须包含字母或数字。');

    }

}</code>

ログイン後にコピー
ログイン後にコピー

}

checkPassword 这个独立验证器 使用不了 我代码书写有问题吗 各位大哥们

回复内容:

namespace app\models;

use Yii;
use yii\base\Model;

class RegisterForm extends Model
{

1

2

3

4

<code>public $email;

public $password;

public $password_repeat;

</code>

ログイン後にコピー
ログイン後にコピー

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

<code>public function rules()

{

    return [

        [['email', 'password', 'password_repeat'], 'required'],

        ['email', 'email'],

        //['email', 'unique', 'targetClass' => '', 'message' => '邮箱名已存在。'],

        [['password', 'password_repeat'], 'string', 'length' => [6, 20]],

        ['password', 'checkPassword'],

        ['password_repeat','compare','compareAttribute' =>'password','message'=>'两次输入的密码不一致。'],

    ];

}

 

public function register()

{

    //处理一些东西

    //注册相关的

    return false;

}

 

public function attributeLabels()

{

    return [

        'email' => '邮箱',

        'password' => '密码',

        'password_repeat' => '重复密码',

    ];

}

 

public function checkPassword($attribute, $params)

{

    if (!ctype_alnum($this->$attribute)) {

        $this->addError($attribute, '必须包含字母或数字。');

    }

}</code>

ログイン後にコピー
ログイン後にコピー

}

checkPassword 这个独立验证器 使用不了 我代码书写有问题吗 各位大哥们

写法是正确的,你是凭什么判定不能使用的呢?

这是我的测试用例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<code>class TestModel extends \yii\base\Model

{

    public $password;

 

    public function rules()

    {

        return [

            ['password', 'checkPassword']

        ];

    }

 

    public function checkPassword($attribute, $params)

    {

        if (!ctype_alnum($this->$attribute)) {

            $this->addError($attribute, 'password error');

        }

    }

}</code>

ログイン後にコピー

test case1:

1

2

3

4

5

6

<code>$model = new TestModel();

$model->password = '1121312&&UJ9123/.';

 

$model->validate();

 

var_dump($model->getErrors()); //会打印出有错误</code>

ログイン後にコピー

test case 2:

1

2

3

4

5

6

<code>$model = new TestModel();

$model->password = '1121312';

 

$model->validate();

 

var_dump($model->getErrors()); //无错误</code>

ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート