2013-03-20 2 views
0

웹 응용 프로그램에서 개체를 만들 때 모델에 몇 가지 규칙을 추가해야합니다. 그러나 내 규칙을 모델에 추가 할 때 실수가 있습니다. 예를 들어 양식을 요약 할 때 휴대폰 번호 사용자가 입력합니다.모델에 Yii Framework를 사용하여 규칙을 추가하는 방법은 무엇입니까?

보기 페이지에서 일부 입력을 완료해야 할 사용자가 있습니다. 그런 다음 일부 입력 값을 사용하지 못하도록 사용자 입력의 유효성을 검사하는 규칙을 추가하고 싶습니다. 자체 유효성 검사 기능을 사용한다는 것을 의미합니다.

Yii Framework를 사용하는 사용자, 귀하의 도움이 필요합니다. 감사합니다.

+0

속성에 대한 유효성 검사 규칙이 필요합니까? 그 외 무엇을 추가 하시겠습니까? – Neophile

+0

어떤 규칙을 추가 하시겠습니까? –

+0

'required' 유효성 검사가 추가되었으며 다른 유효성 검사를 추가해야합니다. 먼저 입력에 또는 * _ $ ... 같은 특수 코드를 포함하거나 정규식을 사용하여 유효성을 검사 할 수 없습니다. –

답변

4

편집 :

public function checkuniqueemail($attribute) 
{ 
    $record=Users::model()->findByAttributes(array($attribute=>$this->email)); 
    if($record!==null) 
     $this->addError($attribute, 'This email has been already taken please choose a different one'); 

} 

: 검증에 자신의 함수를 사용하여 다음이 같이 동일 모델의 기능 로직을 정의 this-

array('username','checkuniquename'), 

같은 속성과 기능을 지정 규칙에 을 rules- Yii 모델의 단일 속성에 대해 여러 유효성 검사 규칙을 정의 할 수 있습니다.

return array(
        array('contact_no','numerical', 'integerOnly'=>true), 
        array('contact_no','length', 'min'=>8), 
        array('name, contact_no', 'required'), 
     array('name, contact_no', 'length', 'max'=>255), 
     array('password','pattern'=>'/^[[email protected]#$%^&*()+=?.,]+$/u', 'message'=>'Spaces or given characters are not allowed'), 
    ); 

모델에 지정할 수있는 유효성 검사가 많이 있습니다.

+0

안녕하세요 Saxena, 답장을 보내 주셔서 감사합니다. 자신의 함수를 사용하여 유효성을 검사하는 경우 유효성 검사 기능을 사용하는 방법에 대해 알아 봅니다. –

+0

편집 된 답변을 확인하십시오. –

+2

@SudhanshuSaxena 그냥 사이드 노트 : 이미 고유 한 (http://www.yiiframework.com/doc/api/1.1/CUniqueValidator) 유효성 검사기가 있기 때문에 나쁜 예를 선택했습니다. 사용자 정의 유효성 검사기와 완전히 똑같습니다. –

0

먼저 당신은)

return array(
.......  
array('duration', 'days_available'), 
..... 

같은 모델의 유효성 검사 규칙을 지정해야합니다;

여기서 duration은 필드 이름이고 days_available은 함수 이름입니다. 그런 다음 모델 내에 함수를 작성해야합니다.

public function days_available($attribute,$params) 
{ 
    //provide proper condition 
    $this->addError('duration','validation message'); 
} 
+0

rules 배열에'$ param'을 정의하는 것을 잊었습니다. 함수에 두 개의 매개 변수를 전달합니다. –

+0

고맙습니다. 시도해 보겠습니다. –