我有两种相似但不同的数据。他们有一些他们共享的表现代码,但有些代表他们以不同的方式实现。
我以为我会在帮助器中有一个工厂功能(Tracker是TrackerHelper)就像这样;
$this->Tracker->getInstance("boolean"); // Returns a BooleanTrackerHelper
但我不确定如何从另一个助手中返回另一个助手。我认为我不能只做一个return new BooleanTrackerHelper()
,因为CakePHP可能有它自己想要经历的例程,此外;这将迫使我将所有类放在同一个文件中。
手册中有一个函数允许您从视图($this->Helpers->load()
)中加载帮助程序,但我想从另一个帮助程序加载帮助程序。
更普遍;如果您不想在一堆不同的视图中重复,如果数据类型为A,请使用帮助程序A,如果类型为B,请使用帮助程序B,并且帮助程序A和B共享某些代码段,您会怎么做?
如果有的话,可能有一种更明智的解决方法;请随时分享!
答案 0 :(得分:1)
如果您只想在另一个帮助器中使用一个帮助器,只需将其包含在您要使用它的$helpers
数组中:
class TrackerHelper extends AppHelper {
public $helpers = array('BooleanTracker');
public function someMethod() {
// Using the other helper
$this->BooleanTracker->someOtherMethod();
}
}