2012-07-03 166 views
0

我有兩種類型相似但不同的數據。他們有一些他們共享的表示代碼,但有些他們的實施方式不同。CakePHP助手之間的共享代碼

我在想,我會有一個工廠函數的助手(Tracker是一個TrackerHelper)像這樣;

$this->Tracker->getInstance("boolean"); // Returns a BooleanTrackerHelper 

但我不知道如何返回另一個助手內的另一個助手。我不認爲我可以做一個return new BooleanTrackerHelper(),因爲CakePHP可能有它想要通過的自己的例程,此外;這會迫使我把所有的類放在同一個文件中。

手冊中有一個函數允許您從視圖中加載幫助程序($this->Helpers->load()),但我想從另一個幫助程序加載幫助程序。

更一般地;如果你不想在一堆不同的視圖中重複使用,你會怎麼做?如果數據的類型爲A,則使用助手A,如果它的類型爲B,則使用助手B,助手A和B共享一些代碼段。

如果是這樣的話,可能有更好的方法來解決這個問題;請隨時分享!

回答

1

如果你只是想用一個助手從另一個助手裏,只包括它的$helpers數組中要使用它:

class TrackerHelper extends AppHelper { 
    public $helpers = array('BooleanTracker'); 

    public function someMethod() { 
     // Using the other helper 
     $this->BooleanTracker->someOtherMethod(); 
    } 
}