namespace app\models;
use yii;
use yii\base\model;
class registerform extends model
{
public $email;public $password;public $password_repeat;
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, '必须包含字母或数字。'); }}
}
checkpassword 这个独立验证器 使用不了 我代码书写有问题吗 各位大哥们
回复内容: namespace app\models;
use yii;
use yii\base\model;
class registerform extends model
{
public $email;public $password;public $password_repeat;
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, '必须包含字母或数字。'); }}
}
checkpassword 这个独立验证器 使用不了 我代码书写有问题吗 各位大哥们
写法是正确的,你是凭什么判定不能使用的呢?
这是我的测试用例:
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'); } }}
test case1:
$model = new testmodel();$model->password = '1121312&&uj9123/.';$model->validate();var_dump($model->geterrors()); //会打印出有错误
test case 2:
$model = new testmodel();$model->password = '1121312';$model->validate();var_dump($model->geterrors()); //无错误