Yii 프레임 워 크 폼 모델 및 검증 용법
폼 모델 CFormModel 은 대부분 CModelCModel 을 계승 합 니 다.표 모델 데이터 가 지속 되 지 않 기 때문에 주로 검증 작업 에 있 습 니 다.다음은 프레임 비계 로 생 성 된 사이트 로그 인 을 예 로 들 어 폼 모델 을 설명 한다.
//
public function rules()
{
return array(
array('username, password', 'required'),
array('rememberMe', 'boolean'),
array('password', 'authenticate'),
);
}
$model=new LoginForm;//
$model->attributes=$_POST['LoginForm'];//
CModel->setAttributes($values,$safeOnly=true)// CModel setter
// model relues ,
// CValidator::createValidator($rule[1],$this,$rule[0],array_slice($rule,2))
CModel->getValidators()
->createValidators()
->rules()
CModel->validate();//
검증 기 내부 실현폼 모델 의 핵심 부분 은 검증 에 있어 그 실현 방식 을 연구한다.
YII 프레임 워 크 에서 독립 된 구성 요소 집합 형식 으로 존재 하 는 지 검증 합 니 다.CValidator 는 모든 검증 기의 기본 클래스 입 니 다.로그 인 인증 을 예 로 들 면rules 방법 에는 required,boolean,authenticate 세 개의 검증 기 가 포함 되 어 있 습 니 다.
public static function createValidator($name,$object,$attributes,$params=array())
{
if(is_string($attributes))
$attributes=preg_split('/[\s,]+/',$attributes,-1,PREG_SPLIT_NO_EMPTY);
if(isset($params['on']))
{
if(is_array($params['on']))
$on=$params['on'];
else
$on=preg_split('/[\s,]+/',$params['on'],-1,PREG_SPLIT_NO_EMPTY);
}
else
$on=array();
if(method_exists($object,$name))
{
$validator=new CInlineValidator;
$validator->attributes=$attributes;
$validator->method=$name;
if(isset($params['clientValidate']))
{
$validator->clientValidate=$params['clientValidate'];
unset($params['clientValidate']);
}
$validator->params=$params;
if(isset($params['skipOnError']))
$validator->skipOnError=$params['skipOnError'];
}
else
{
$params['attributes']=$attributes;
if(isset(self::$builtInValidators[$name]))
$className=Yii::import(self::$builtInValidators[$name],true);
else
$className=Yii::import($name,true);
$validator=new $className;
foreach($params as $name=>$value)
$validator->$name=$value;
}
$validator->on=empty($on) ? array() : array_combine($on,$on);
return $validator;
}
검증 기 프로 세 스 생 성1.속성 획득(array$attributes)및 필드 사용(array$on)
2.검증 기 가 model 에 존재 하 는 지 판단 하고 내 연 된 검증 기 를 만 드 는 CInlineValidator 가 존재 하지 않 으 면 세 번 째 단 계 를 실행 합 니 다.
3.만약 에 검증 기 가 프레임 워 크 자체 가 가 져 온 자체 검증 기 라면 외부 검증 기 를 가 져 온 다음 에 예화 하고 값 을 부여 한다.
validate()를 실행 할 때 발생 할 수 있 는 오 류 는 model 에 저 장 됩 니 다.CModel:getErrors()와 CModel::getError()를 호출 하여 오류 정 보 를 추출 할 수 있 습 니 다.
PS:이 사이트 의 phop 포맷 미화 도 구 를 추천 합 니 다.
php 코드 온라인 포맷 미화 도구:http://tools.jb51.net/code/phpformat
Yii 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 는 Yii 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Yii2 삭제 확인 대화 상자를 괄호로 설정합니다.가까스로 처음부터 부트스트랩이었는데, 삭제 확인 등에 사용된 그 OS 표준 대화 상자인 JSconfirm()도 더 멋있고 싶었다.그래서 Bootbox는 그것을 다시 쓴다. 프레임에서 찾아낸yii.js에 이렇게 쓰여 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.