>백엔드 개발 >PHP 튜토리얼 >yii2 모델 검증 규칙 rule 검증에 실패한 규칙은 다른 필드 검증을 계속하지 않고 즉시 반환됩니다.

yii2 모델 검증 규칙 rule 검증에 실패한 규칙은 다른 필드 검증을 계속하지 않고 즉시 반환됩니다.

ringa_lee
ringa_lee원래의
2018-05-10 14:35:211399검색


yii2 모델 검증 규칙 규칙 규칙 검증에 실패하면 다른 필드 검증을 계속하지 않고 즉시 반환됩니다.

Mode::rules();

public function rules()
{
     [['username', 'password'], 'required'],
     ['age', 'required'],
     // ......

}

사용자 이름이 비어 있으면 비밀번호와 나이를 확인하지 않고 즉시 오류가 반환됩니다. 마찬가지로 age가 비어 있으면 다른 필드는 검증되지 않습니다

yii2에도 이런 구성이 있는지 궁금합니다.

답글 내용:

yii2 모델 검증 규칙 rule 규칙 검증에 실패하면 다른 필드 검증을 계속하지 않고 즉시 반환됩니다.

Mode::rules( );

public function rules()
{
     [['username', 'password'], 'required'],
     ['age', 'required'],
     // ......

}

사용자 이름이 비어 있으면 비밀번호와 나이를 확인하지 않고 즉시 오류가 반환됩니다. 마찬가지로 age가 비어 있으면 다른 필드는 검증되지 않습니다

yii2에도 이런 구성이 있는지 궁금합니다.

검증 후 어떤 항목이 검증을 통과하지 못했는지 알려드리겠습니다. 구체적으로 코드를 참조하세요.

/**
     * Performs the data validation.
     *
     * This method executes the validation rules applicable to the current [[scenario]].
     * The following criteria are used to determine whether a rule is currently applicable:
     *
     * - the rule must be associated with the attributes relevant to the current scenario;
     * - the rules must be effective for the current scenario.
     *
     * This method will call [[beforeValidate()]] and [[afterValidate()]] before and
     * after the actual validation, respectively. If [[beforeValidate()]] returns false,
     * the validation will be cancelled and [[afterValidate()]] will not be called.
     *
     * Errors found during the validation can be retrieved via [[getErrors()]],
     * [[getFirstErrors()]] and [[getFirstError()]].
     *
     * @param array $attributeNames list of attribute names that should be validated.
     * If this parameter is empty, it means any attribute listed in the applicable
     * validation rules should be validated.
     * @param boolean $clearErrors whether to call [[clearErrors()]] before performing validation
     * @return boolean whether the validation is successful without any error.
     * @throws InvalidParamException if the current scenario is unknown.
     */
    public function validate($attributeNames = null, $clearErrors = true)
    {
        if ($clearErrors) {
            $this->clearErrors();
        }

        if (!$this->beforeValidate()) {
            return false;
        }

        $scenarios = $this->scenarios();
        $scenario = $this->getScenario();
        if (!isset($scenarios[$scenario])) {
            throw new InvalidParamException("Unknown scenario: $scenario");
        }

        if ($attributeNames === null) {
            $attributeNames = $this->activeAttributes();
        }
        //注意这个foreach
        foreach ($this->getActiveValidators() as $validator) {
            $validator->validateAttributes($this, $attributeNames);
        }
        $this->afterValidate();

        return !$this->hasErrors();
    }
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.