我不想像下面那样添加它,因为我在某些操作方法中只需要它们一次
(所以不要无用加载内存)
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('Html', 'Session');
var $components = array('Session', 'Email');
我不想像下面那样添加它,因为我在某些操作方法中只需要它们一次
(所以不要无用加载内存)
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('Html', 'Session');
var $components = array('Session', 'Email');
class UsersController extends AppController {
public function method_name() {
$this->helpers[] = 'MyHelper'
}
}
更多关于这在文档中。
希望有帮助。
您可以使用加载助手
$this->helpers[] = 'MyHelper';
正如 Rob 上面提到的,但这不适用于控制器,因为它们有初始化和启动方法,需要调用它们才能工作。
我在网络上遇到了一些代码,用于在控制器操作中加载组件:ComponentLoaderComponent
是的,它是一个组件,但它不是很大,因此将它包含在您的控制器中应该不是问题。
或者你可以研究它来看看组件加载是如何工作的,然后编写你自己的控制器动作来做同样的事情。
我使用一个组件来动态添加助手和组件:
$this->Common->addHelper('Tools.Datetime');
$this->Common->addHelper(array('Text', 'Number', ...));
$this->Common->addComponent('RequestHandler');
$this->Common->addLib(array('MarkupLib'=>array('type'=>'php'), ...));
ETC
完整的代码可以在我刚刚打开的 cakephp 增强票中看到:http: //cakephp.lighthouseapp.com/projects/42648-cakephp/tickets/1277
或使用 php 标记: http: //www.dereuromark.de/2010/11/10/loading-classes-on-the-fly/
它还修复了 mtnorthrop 发布的解决方案的一些小问题。现在可以使用插件以及传递的选项。玩得开心。