如何从视图中调用组件中的函数? (ctp档案)
这样做甚至是一个好习惯吗?
谢谢,
三通
答案 0 :(得分:7)
我建议将组件方法包装在帮助程序中,然后使用通常的路径来访问帮助程序。
答案 1 :(得分:6)
对于大多数组件,您可以使用以下内容:
App::import('Component', 'YourComponent');
$theComponent = new YourComponent();
$theComponent->yourMethod();
但是,组件旨在共享控制器使用的功能,因此通常应避免从视图中调用组件。
答案 2 :(得分:5)
一切皆有可能!
组件:
function initialize(&$controller){
$this->controller =& $controller;
$this->controller->set('YourComponent', new YourComponent());
}
查看:
<?php $YourComponent->doAction() ... ?>
答案 3 :(得分:0)
我认为这样做不是好习惯。想象一下设计师可以使用的视图。如果可能的话,您希望将代码保留在模型和控制器中。如果它与可重用的视图内容有关,请考虑将控制器移动到元素或帮助程序,因为这是它们的目的。
如果您提供了更多详细信息,如果您已经拥有我们可以参考的代码库,我们可以更具体地说明如何实现某些内容。
答案 4 :(得分:0)
在cakephp 3中
$config = new \Cake\Controller\ComponentRegistry();
$CustomComponent = new \App\Controller\Component\CustomComponent ($config);