CakePHP - 从视图中调用组件的功能
对于大多数组件,你可以使用类似:
App::import('Component', 'YourComponent');
$theComponent = new YourComponent();
$theComponent->yourMethod();
然而,组件意味着共享由控制器使用的功能,所以平时应当避免的看法调用组件。
我建议将组件方法包装在帮助器中,然后使用通常的路径访问帮助器。
我认为这不是一个好习惯。将设计视为设计师应该使用的一种视图。如果可能的话,您希望将代码保存在模型和控制器中。如果它与可重用的视图内容有关,请考虑将控制器移动到元素或助手,因为这是他们的目标。
如果您提供了更多详细信息,我们可以更具体地说明如何实现某些功能,如果您已经拥有我们可以参考的代码库。
我的意见是,这是一个判断的呼吁。代码是代码,逻辑是逻辑。它的一些属于控制器,一些属于模型,另一些属于视图。但**一些**代码需要在任何地方**访问**。以**余弦**为例。以**今天的日期**为例。有什么可能的原因可以限制这些功能只是MVC范例的一部分,因为我们已经发明了一个范例? – UncaAlby 2016-08-22 21:11:41
它与MVC范例@UncaAlby和更多关于SOLID无关。为什么渲染系统需要知道做数学?渲染HTML没有理由知道数学。 – 2016-08-24 17:56:25
一切都是可能的!
组件:
function initialize(&$controller){
$this->controller =& $controller;
$this->controller->set('YourComponent', new YourComponent());
}
查看:
<?php $YourComponent->doAction() ... ?>
这是好方法,我声明public $ components = array(“compo1”);然后我设置组件:$ this-> set(“compo1”,$ this-> compo1);有效! – Phuong 2016-12-21 04:50:34
感谢@Jonathan,我也在我的代码使用后建议帮手。 – 2017-12-07 13:32:09