Yii 프레임 워 크 폼 모델 및 검증 용법

본 논문 의 사례 는 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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기