2013-02-19 47 views
1

我有兩種情況。CakePHP:一個行爲如何使用插件的行爲功能?

方案1:

寫在我的APP /型號/行爲的ProcessableBehavior需要使用一個插件叫做可查詢其他行爲中的功能。

如何從ProcessableBehavior內部調用Queryable.Queryable函數doSomething?

方案2:

如果我寫了一個插件可以加工現在包含ProcessableBehavior所以此行爲取決於Queryable.Queryable功能DoSomething的,我該怎麼辦調用?

回答

3

您可以隨時調用模型方法的內部行爲。由於所附行爲的行爲與此類似,您應該能夠將它們稱爲模型的一部分。

// behavior 1 
public function myFirstBehaviorMethod(Model $Model) { 
    // do sth 
} 

而且

// behavior 2 
public function mySecondBehaviorMethod(Model $Model) { 
    $Model->myFirstBehaviorMethod($foo, $bar); 
} 

的基本思想是,他們不一定了解它其他。你只是假設它們是模型的一部分(因爲行爲豐富了模型的功能)。

請注意,您不必傳遞$ Model對象,因爲它將在內部使用$ Model。

確保您以正確的順序附加/加載它們。 如果一個取決於其他你可以檢查它在設置()等:

// throw exception if not available 
if (!$Model->Behaviors->attached('Queryable') {} 
+0

好的答案!我明天會嘗試。 – 2013-02-19 13:13:47