【发布时间】:2014-10-19 13:54:45
【问题描述】:
我正在使用第三方库以特定方式格式化数据。 我设法从该库创建了一个组件,执行以下操作:
App::uses('Component', 'Controller');
App::import('Vendor','csformat' ,array('file'=>'csformat'.DS.'csformat.php'));
class CSFormatComponent extends Component {
public function startup(Controller $controller){
$controller->CSF = new csfStartup(null);
return $controller->CSF;
}
}
这样做可以让我通过控制器访问库提供的不同类。但我意识到我会做很多不必要的$this->set($one, $two) 来将格式化数据从控制器传递到视图,从本质上讲,库作为帮助器可能更有益,因为我可以在视图上格式化我的数据。
任何想法如何创建这样的助手?
更新:
根据下面评论中Kai 的建议,我创建了一个基本的助手,App::imports 供应商库,并在我的控制器中需要的地方包含了助手,因此我可以在我的视图中访问库.
我现在的问题是我不想在每个视图中都不断地实例化库的 csfStartup 类。
有没有办法让我的助手在调用助手时轻松提供该类的实例?类似于我的组件的工作方式。
【问题讨论】:
-
在加载供应商库时,App::import 实际上只是
include的包装器。所以你应该能够在控制器中使用App::import,并且能够在相应的视图中访问该类。或者,编写一个简单的帮助程序,它只是用于访问您的库的包装器,然后将您的App::import移动到那里。 -
感谢您的评论,@Kai。我按照您的建议创建了一个简单的助手。它工作正常,但我正在寻找让我的助手在我调用它时准备好
csfStartup(null)的实例,而不是我必须在每个视图中创建一个新实例$this->CSF = new csfStartup(null)。关于如何构建帮助器的任何建议?
标签: cakephp cakephp-2.5