2012-04-25 3 views
5

"beforeSave"모델 기능에서 일부 작업을 수행하는 모델 인스턴스를 저장하고 있습니다.
일부 오류/메시지를 모델에 추가 한 다음 컨트롤러에서 가져 와서 사용자에게 보여주고 싶습니다.Yii 사용자 정의 모델 오류

  • 사용 그것은 내가 새로운 더미 속성을 발명해야합니다으로 그것을 할 수있는 가장 좋은 방법이 아니다 액티브 기능 "addError": $this->addError("dummy"=>"my message");와 더미 속성 :
    는 지금까지 내가 이것을 구현하는 방법의 두 가지 아이디어가 있습니다.
  • 모델과 기능 "addCustomErrors"

어쩌면 내장 방법은 그것 또는 확장이 할 수 있습니다에 새 속성 "custom_errors"을 추가 하시겠습니까?
어쨌든 어떻게해야합니까?

+4

'beforeSave' 안에 오류 메시지를 추가 하시겠습니까? 그건 좋은 생각이 아니야. 검증하는 동안 왜하지 않는거야? – Jon

+0

예를 들어 파일을 업로드하고 서버에 업로드되었는지 확인해야하거나 유효성 확인과 관련이없는 캐시 지우기 등과 같은 다른 작업을 수행해야합니다. – lvil

+1

모든 것이 성공적으로 완료되어야합니다 * * * 전에 그래도 'save'를 호출하십시오 ... – Jon

답변

6

당신은 addError()를 사용할 수 있지만 가짜 속성을 구성 할 필요가 없습니다 뭔가를 할 단지 수 있습니다. 오류는 모델 자체에 아무것도 관련되지 않는 경우 다음 뭔가 잘못하고 : 같은 귀하의 경우 페이지

하는 것이 될 것이다 뭔가 :

$this->addError('file', 'Something happened I wasn\'t pleased with'); 

의 다른 오류가있는 경우 file 속성을 사용하면 덮어 쓰기에 대해 걱정할 필요가 없습니다.

+0

하나의 질문. 오류가 아닌 메시지를 전달하고 싶습니다. 업로드 된 파일을 대체하고 사용자에게 파일이 대체되었음을 알리고 싶다고 가정 해 보겠습니다. addError로 만들면 오류가있어 모델 저장 여부를 확신 할 수 없습니다. – lvil

+0

오류 추가는 모델 저장에 영향을 미치지 않습니다. 오랫동안 저장해야 함을 확인하는 한 – Paystey

+0

오늘의 잘못된 시간에 레코드가 작성되지 않았 음을 확인해야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? – Gherman

2

여기에 문제가 표시되지 않습니다. addError() http://www.yiiframework.com/doc/api/1.1/CModel#addError-detail을 사용하기 만하면됩니다. 이 모델은 심지어에서 save()를 호출 한 후에 유지, 그래서 당신은

yourController() 
{ 
    do_something(); 
    do_something(); 
    $model->save(); 
    $errors[]=do_what_you_have_to_do_to_define_the_errors_which_will_be_added(); 
    $model->addError(attribute, $errors); 
    $this->render(viewWhereTheErrorWillBeDisplayed, $model); 
} 
+0

질문은 어떤 속성없이 오류를 추가하는 방법입니다 – Gherman