加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Yii2:ActiveForm字段数字,长度=> 8

发布时间:2020-12-13 18:05:29 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使yii2验证我的ActiveForm字段,该字段应为数字且长度为8个字符. 以下是我在yii2 / advanced / backend的默认LoginForm模型中尝试过的,但不幸的是isNumeric验证器根本没有启动: public function rules(){ return [ // username and password are b
我正在尝试使yii2验证我的ActiveForm字段,该字段应为数字且长度为8个字符.

以下是我在yii2 / advanced / backend的默认LoginForm模型中尝试过的,但不幸的是isNumeric验证器根本没有启动:

public function rules()
{
    return [
        // username and password are both required
        [['username','password'],'required'],// username should be numeric
        ['username','isNumeric'],'string','length'=>8],// password is validated by validatePassword()
        ['password','validatePassword'],];
}

/**
 * Validates if the username is numeric.
 * This method serves as the inline validation for username.
 *
 * @param string $attribute the attribute currently being validated
 * @param array $params the additional name-value pairs given in the rule
 */
public function isNumeric($attribute,$params)
{
    if (!is_numeric($this->username))
        $this->addError($attribute,Yii::t('app','{attribute} must be numeric',['{attribute}'=>$attribute]));
}

/**
 * Validates the password.
 * This method serves as the inline validation for password.
 *
 * @param string $attribute the attribute currently being validated
 * @param array $params the additional name-value pairs given in the rule
 */
public function validatePassword($attribute,$params)
{
    if (!$this->hasErrors()) {
        $user = $this->getUser();
        if (!$user || !$user->validatePassword($this->password)) {
            $this->addError($attribute,'Incorrect username or password.');
        }
    }
}

我还尝试添加一个相关帖子(https://stackoverflow.com/a/27817221/2037924)中建议的场景,但只有在场景中没有包含密码字段时才会起作用(如显示错误).

这是实现这一目标的好方法,还是你能想到一个更好的方法吗?

注意:我将用户名定义为字符串的原因是因为数字可能包含前导0.

在此处阅读有关验证的更多信息: http://www.yiiframework.com/doc-2.0/guide-tutorial-core-validators.html#number

这对我使用yii2-basic的联系表格很好

/**
 * @return array the validation rules.
 */
public function rules()
{
    return [
        // name,email,subject and body are required
        [['name','email','subject','body'],// email has to be a valid email address
        ['email','email'],['subject','is8NumbersOnly'],// verifyCode needs to be entered correctly
        ['verifyCode','captcha'],];
}

public function is8NumbersOnly($attribute)
{
    if (!preg_match('/^[0-9]{8}$/',$this->$attribute)) {
        $this->addError($attribute,'must contain exactly 8 digits.');
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读