CakePHP:一个行为如何使用插件的行为功能?

时间:2013-02-19 11:29:50

标签: cakephp plugins cakephp-2.0 behavior

我有两种情况。

情景1:

在我的APP / Model / Behavior中编写的ProcessableBehavior需要在插件中使用另一个名为Queryable的行为中的函数。

如何从ProcessableBehavior中调用Queryable.Queryable函数doSomething?

情景2:

如果我编写一个现在包含ProcessableBehavior的Plugin Processable,所以这个行为依赖于Queryable.Queryable函数doSomething,我该如何进行调用?

1 个答案:

答案 0 :(得分:3)

在内部行为中,您始终可以调用模型方法。由于附加的行为与那些行为相似,因此您应该能够将它们称为模型的一部分。

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

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

基本思想是他们不一定要知道其他。您只是假设它们是模型的一部分(因为行为丰富了模型的功能)。

请注意,您不必传递$ Model对象,因为它将在内部使用$ Model。

确保以正确的顺序附加/装入它们。 如果一个人依赖另一个你可以在setup()等中检查它:

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