2012-04-14 105 views
3

我在CakePHP 2.0中測試模型時遇到問題,看起來問題出在模型的構造函數上。如何在CakePHP中正確覆蓋模型的構造函數

public function __construct(){ 
    parent::__construct(); 
    $this->_pagi_cuantos = 2; 
} 

即使我刪除了所有內容,但仍然遇到嘗試運行測試的問題。

馬克的故事告訴我:

,如果你有一個構造函數確保你正確地重寫構造 。不這樣做會導致這樣的錯誤。

我錯了什麼?

+0

會發生什麼?如果你需要幫助,你必須給我們更多的東西...... – Joep 2012-04-14 13:04:36

+0

那麼,發生什麼應該是無關緊要的。但是如果你想知道它:testCase不能很好地選擇數據庫。它適用於默認的測試版。 (順便說一句,我已經更新了這篇文章) – Alvaro 2012-04-14 13:07:10

+0

這個問題是所有版本的CakePHP實際。我在1.3 – 2012-05-14 20:50:07

回答

18

你爲什麼不考慮核心代碼 其開源畢竟: https://github.com/cakephp/cakephp/blob/2.1/lib/Cake/Model/Model.php#L653

所以對於所有型號:

public function __construct($id = false, $table = null, $ds = null) { 
    parent::__construct($id, $table, $ds); 
} 
+0

中遇到了同樣的問題謝謝!它運作良好。 – Alvaro 2012-04-14 15:30:15

+0

在[Overriding Model的__construct方法](https://api.cakephp.org/2.0/class-AppModel.html#___construct)的CakePHP 2.0 API文檔中也提到了這一點。 – icc97 2017-10-13 15:22:42

6

而不是重寫構造,如何使用beforeFilter ()for controller或之前的模型方法,如beforeFind(),beforeValidate()等。

1

我發現的一種方法是做類似這樣的事情:

function __construct() { 
    call_user_func_array(array('parent', '__construct'), func_get_args()); 
} 

它可以讓你不必擔心父母通過什麼。儘管該代碼非常可怕。