2011-09-29 98 views
2

在我的cakephp項目中,我使用模型類的afterSave()方法。在這種方法中,我想調用位於app_controller文件中的另一個方法。在cakephp中使用模型類中的控制器方法

class MyModel extends AppModel { 

     var $name = 'MyModel'; 

     function afterSave($created) { 

      $this->MyController->updateData();   
     } 

} 

此處updateData()位於app_controller文件中,該文件由MyController控制器進行擴展。

上面的代碼不工作,所以我如何能真正在這種情況下,調用UpdateData()..

請指導。

感謝

+4

MVC最佳實踐指出模型不應該知道控制器。如果不將'updateData()'方法移動到模型層(即AppModel)。 – deizel

+0

謝謝deizel,我想我應該遵循MVC的指導方針,我已經改變了我的代碼,使用afterSave方法..謝謝你的正確指導.. – Prashant

回答

5

這是強烈不推薦,但它反正可以做......你應該儘量爲deizel說並移動方法AppModel或任何其他特定型號...

你可以使用此功能

應用::進口()檢查book here,看看如何使用它

在你的榜樣:

class MyModel extends AppModel { 

     var $name = 'MyModel'; 

     function afterSave($created) { 
      App::import('Controller', 'My'); 
      $something = new MyController; 
      $something->updateData();   
     } 

} 

這是在另一個地方加載類的正確方法,它不應該是......仍可以使用include或required並創建類的實例,因爲這是php。

+0

謝謝,但我寧願去與你不推薦這種方法的建議,和所以我不會在這種情況下使用afterSave。 – Prashant

相關問題