2012-06-15 6 views
1

모델에서 beforeSave 함수로 플래시 메시지 또는 오류 메시지를 설정하고 뷰에서 오류/메시지를 읽는 방법이 있습니까? 그리고 나는 유효성 검사 오류에 관해 말하는 것이 아닙니다.cakephp beforeSave 플래시 메시지

+1

이 가능성이 컨트롤러가이 임무를해야합니다, 당신은()은'beforeRender에 메시지를 설정할 수 MVC를 깰 것'행동 귀하의 컨트롤러의. 너는 무엇을 성취하려고 노력하고 있는가? – Ross

+0

@ 로스 왜 이것이 MVC를 깨뜨릴까요? 모델은 에러 메시지를 컨트롤러에 다시 전달해야합니다.이 컨트롤러는 에러 메시지가 나타날 때까지 – icc97

+0

@Ross이 대체 [answer on MVC errors] (https://stackoverflow.com/a/8453125/327074)를보아야합니다. 컨트롤러를 통해 전달 된 다음 MVC 함께 잘 작동합니다. – icc97

답변

6

이 라인을 따라 뭔가 손에서 사용할 수있는 정보와 함께 작동합니다 :

<?php 
class AppModel extends Model { 

    public $lastErrorMessage; 

    public function beforeSave(...) { 
     $this->lastErrorMessage = null; 
     return true; 
    } 

} 

<?php 
class MyModel Extends AppModel { 

    public function beforeSave(...) { 
     parent::beforeSave(..); 
     if (error) { 
      $this->lastErrorMessage = 'Some error message'; 
      return false; 
     } 
     return true; 
    } 
} 

<?php 
class MyController extends AppController { 

    public function action() { 
     if ($this->MyModel->save($this->request->data)) { 
     } else { 
      $message = "Some default message"; 
      if ($this->MyModel->lastErrorMessage) { 
       $message = $this->MyModel->lastErrorMessage; 
      } 
      $this->Session->setFlash($message); 
     } 
    } 
} 
관련 문제