2013-10-30 37 views
0

我寫一個行爲CakePHP的行爲錯誤的模型

<?php 

class LogsBehavior extends ModelBehavior { 


     public $Model; 

     public function setup(Model $model, $config = array()) { 
      $this->Model = $model; 
     } 

     public function afterSave(Model $Model, $created, array $options = array()) { 

      pr($this->Model); 
      exit; 


     } 

} 

好了,當我檢查的設置方法我在$模式:

Comprovante Object 
(...) 

當我保存的條目,我到達afterSave方法$ Model屬性是

Comprovante Object 
    (...) 

但我的$這個 - >型號是:

Cliente Object 

看來以前的對象是有沒有Comprovante ...

有人能幫助我嗎?

Comprovante.php

public $actsAs = array('Logs'); 
+0

這不是你如何能或應該在2.x中編程行爲。模型共享行爲,因此你的方法註定要失敗。 – mark

回答

1

您不能在這裏使用一個共享的屬性,上面列出的理由。

始終提供方法,即獲得通過示範作爲第一個參數:

public function someMethod(Model $Model, ...) { 
    $this->_someMethod($Model, ...); 
} 

protected function _someMethod(Model $Model, ...) {} 

瞭解如何目前的核心和(歡迎!)插件/用戶空間的行爲做出來,擁抱他們的方式做事。

+0

好吧,我明白了。在_someMethod中,我可以爲單個模型設置屬性嗎? –

+0

沒有屬性通過$ settings設置。正如我已經告訴你看看源代碼,它會告訴你一切:https://github.com/cakephp/cakephp/blob/master/lib/Cake/Model/Behavior/ContainableBehavior.php#L68 – mark