2012-11-25 3 views
1

모델 필드의 기본값과 관련하여 질문이 있는데,이 문제로 인해 당분간 미친 듯이 보입니다. 양식에서 제출되지 데이터베이스에 삽입모델 유효성 검사 규칙의 기본값

$validate = array (
    ... 
    'status' => array(
     'list' => array(
      'rule' => array('inList', array('0','1')), 
      'allowEmpty' => true 
     ) 
    ) 
) 

데이터 :

당신에게 예를 위해, 나는 검증해야하는 상태 필드 모델을 가지고있다.

상태 필드가 없으면 기본값을 1로 설정하고, 그렇지 않으면 유효성을 검사해야합니다.

사용자 지정 유효성 검사 규칙을 사용하지 않고 모델에서이 작업을 수행 할 수있는 방법이 있습니까? MySQL 테이블의 기본값을 설정할 수 있지만 다른 값을 제출할 경우 모델에서 유효성을 검사하고 싶습니다.

편집

나는 유효성 검사 클래스 코드 보았고 inList 검증은와 in_array 검사 단지 바보 같은 래퍼 :

Cake.Utility.Validation.php

public static function inList($check, $list, $strict = true) { 
    return in_array($check, $list, $strict); 
} 

CakePHP Api docs ($ strict)에 언급되지 않은 세 번째 매개 변수가 있는데, 기본값은 true입니다. 와 in_array 문서에서

:

엄격한 세번째 파라미터는 다음 TRUE로 세트와 in_array()의 경우에는 모래 사장에서 바늘의 종류를 확인한다 기능.

아직 내 문제는 해결되지 않지만 allowEmpty가 true로 설정된 경우에도 array ('inList', array ('0', '1'))가 빈 필드의 유효성을 검사하지 않는 이유를 알고 있습니다.

감사합니다.

답변

1

beforeSave 메서드를 사용하여 기본값을 설정할 수 있습니다. 사실로 돌아가는 것을 잊지 마십시오. 그렇지 않으면 저장을 중단합니다.

+0

'allowEmpty'=> true를 추가 했더라도 유효성 검사 규칙을 통과하지 않는다면 작동 할 수도 있습니다. 나는 또한 시도했다 : array ('inList', array ('', '0', '1')), 그러나 지금까지 행운. –

+1

beforeValidate()는 어떻습니까? –

+0

Hmmm ... beforeValidate()에서 사용자 지정 유효성 검사 규칙을 추가하는 것과 동일한 기능을 사용하고 있지 않습니까? 그러나 기본값을 추가하는 미리 정의 된 방법이 없다는 데 동의하므로 제안 사항을 수행하고 beforeSave()에 값을 추가합니다. 또한 inList 규칙을 array ('inList', array ('0', '1'), false)와 같이 수정합니다. 그렇지 않으면 빈 필드의 유효성을 검사하지 않기 때문입니다. –