2011-01-14 8 views
4

일부 데이터를 필드에 삽입하고 업데이트 버튼을 클릭하여 업데이트했지만 validates()은 항상 false를 반환합니다. 모든 필드가 올바르게 채워지고 오류 메시지가 표시되지 않습니다. validates()은 false를 반환합니다. 왜?cakephp, 유효성 검사 오류

$this->Post->set($this->data); 
if ($this->Post->validates()) 
    echo 'ok'; 
else 
    echo 'error'; 
+1

먼저 구문이 잘못되었으므로 여는 중 {{'있지만 닫는 중}은 없습니다. 둘째,'debug ($ this-> Post-> invalidFields())'를 시도하여 실패한 필드를 확인하십시오. – deceze

+0

감사합니다. 데이터베이스에 8 개의 필드가 있지만 업데이트 만 필요합니다. 4. 왜 케이크가 8 개의 필드 모두를 확인합니까? – lolalola

+1

모델 유효성 검사 규칙 및 $ 데이터 배열 게시 – Ish

답변

5

일부 팁은 this post을 확인하십시오. 관련 항목이 여기에 제공됩니다.

  1. 저장()이 작동하지 않습니다! 가끔 save()이 분명한 이유없이 실패하는 경우가 있습니다. 데이터 배열이 정상적으로 보이고 형식을 올바르게 작성한 경우 등은 있지만 쿼리가 실행되지 않았습니다. 유효성 검증 오류로 인해 저장에 실패했을 가능성이 매우 높습니다. 어쩌면 일부 모델을 업데이트하고 양식의 현재 필드가 유효성 검사를 통과하는 동안 일부 "다른 것들"이 유효성 검사 규칙을 실패하게 만들 가능성이 있습니다. 유효성 검사로 어떤 일이 벌어지는 지 쉽게 볼 수있는 방법은 pr($this->validationErrors);입니다. 이 방법을 사용하면 모델 유효성 검사에서 어떤 일이 일어나는지 정확히 알 수 있습니다. 다른 옵션은 유효성 검사를 비활성화하기 위해 에 false을 두 번째 매개 변수로 전달하는 것입니다. 그러나 후자의 방법은 많은 힌트를 제공하지 않으며 실패한 문제를 해결하는 데 사용해서는 안되며 유효성 검사를 의도적으로 피하는 것이 좋습니다.

  2. Save()는 여전히 작동하지 않습니다! 모델 또는 앱 모델에 beforeSave();이 있습니까? 항상이 방법을 다시 확인하고 더 중요한 것은 true을 반환하는지 확인하십시오.

  3. 만들거나 CakePHP의이 $validate 배열에 사용하는 'on' 키가 업데이트에 대한 검증. 새 레코드를 만드는 동안 또는 기존 레코드를 업데이트하는 동안 규칙을 적용할지 여부를 지정할 수 있습니다. 예를 들어 새 사용자 계정을 만들 때 고유 한 이메일 주소 만 확인하려는 경우 을 $validate 배열에 추가합니다. 따라서 일부 사용자를 업데이트/편집 할 때이 규칙은 무시됩니다.

+0

'pr ($ this-> Post-> validationErrors); – icc97

관련 문제