2012-06-15 54 views
1

有沒有辦法在beforeSave函數中設置模型中的flash消息或錯誤消息,並在視圖中讀取錯誤/消息。我不是在談論驗證錯誤。cakephp beforeSave flash message

+1

這可能會打破MVC的控制器應與此進行任務,你可以在'beforeRender設置消息()'行動你的控制器。你想要達到什麼目的? – Ross

+0

@Ross爲什麼會打破MVC?該模型應該將錯誤消息傳回給控制器,該控制器將其顯示到視圖 – icc97

+0

@Ross查看此備用[關於MVC錯誤的答案](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); 
     } 
    } 
}