몇 번이나이 문제가 발생했지만 해결책을 찾지 못했지만 해결 방법은 없습니다.유효성 검사 호출 사이의 동적 규칙 유효성 검사
내가 10 개의 작업을 여러 개 가지고 있다고 가정 해 봅시다. 주어진 답변에 따라 유효성 검사 규칙이 다릅니다.
foreach($jobs as $job){
if(!$this->Job->validates()){
echo 'Oh no, it didn't validate';
}
}
내가 아는 주요 문제는 첫 번째 작업에서만 트리거 된 규칙을 설정 한 경우입니다.
if($this->data['Job']['type'] == 'special'){
$this->validator()->add('special_field', 'notEmpty', array(
'rule' => array('notEmpty'),
'message' => 'Please provide data'
));
}
다른 9에도 적용됩니다. 따라서 규칙은 호출간에 지속됩니다. 따라서 규칙이 존재할 경우 제거 할 수 있습니다.
if($this->data['Job']['type'] == 'special'){
$this->validator()->add('special_field', 'notEmpty', array(
'rule' => array('notEmpty'),
'message' => 'Please provide data'
));
}else{
$this->validator()->remove('special_field', 'notEmpty');
}
그러나 제거하려고 시도 할 때 규칙이 없으면 치명적인 오류가 발생합니다.
beforeValidate 시작시 동적 규칙을 제거하기 전에 규칙을 제거하기 전에 규칙을 확인하는 방법이 있습니까?
기타 답변은 정확합니다. 치명적인 오류가 없으면 throw하기 때문에 제거하기 전에 규칙이 존재하는지 확인해야합니다. – MichaelMc
예. 나는 모든 규칙을 제거 할 때 오류가 없다고 말하고자했다. – savedario