모델 필드의 기본값과 관련하여 질문이 있는데,이 문제로 인해 당분간 미친 듯이 보입니다. 양식에서 제출되지 데이터베이스에 삽입모델 유효성 검사 규칙의 기본값
$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'))가 빈 필드의 유효성을 검사하지 않는 이유를 알고 있습니다.
감사합니다.
'allowEmpty'=> true를 추가 했더라도 유효성 검사 규칙을 통과하지 않는다면 작동 할 수도 있습니다. 나는 또한 시도했다 : array ('inList', array ('', '0', '1')), 그러나 지금까지 행운. –
beforeValidate()는 어떻습니까? –
Hmmm ... beforeValidate()에서 사용자 지정 유효성 검사 규칙을 추가하는 것과 동일한 기능을 사용하고 있지 않습니까? 그러나 기본값을 추가하는 미리 정의 된 방법이 없다는 데 동의하므로 제안 사항을 수행하고 beforeSave()에 값을 추가합니다. 또한 inList 규칙을 array ('inList', array ('0', '1'), false)와 같이 수정합니다. 그렇지 않으면 빈 필드의 유효성을 검사하지 않기 때문입니다. –