CakePHP-调用组件';从一个角度看s函数

CakePHP-调用组件';从一个角度看s函数,cakephp,Cakephp,如何从视图中的组件调用函数?(ctp文件) 这是一个很好的做法吗 谢谢, Tee对于大多数组件,您可以使用以下组件: App::import('Component', 'YourComponent'); $theComponent = new YourComponent(); $theComponent->yourMethod(); 但是,组件用于共享控制器使用的功能,因此通常应避免从视图调用组件。我建议将组件方法包装在帮助器中,然后使用常规路径访问帮助器。我认为这样做不是一种好的做法。

如何从视图中的组件调用函数?(ctp文件)
这是一个很好的做法吗

谢谢,

Tee

对于大多数组件,您可以使用以下组件:

App::import('Component', 'YourComponent');
$theComponent = new YourComponent();
$theComponent->yourMethod();

但是,组件用于共享控制器使用的功能,因此通常应避免从视图调用组件。

我建议将组件方法包装在帮助器中,然后使用常规路径访问帮助器。

我认为这样做不是一种好的做法。将视图视为设计师可以使用的东西。如果可能的话,您希望将代码保存在模型和控制器中。如果它与可重用的视图内容有关,请考虑将控制器移到元素或帮助器上,因为这是它们所期望的。p> 如果您提供更多详细信息,我们可以更具体地说明如何实现某些东西,如果您已经有了我们可以参考的代码库。

一切都是可能的

组成部分:

    function initialize(&$controller){
        $this->controller =& $controller;
        $this->controller->set('YourComponent', new YourComponent());
    }
视图:


在cakephp 3中

$config = new \Cake\Controller\ComponentRegistry();
$CustomComponent = new \App\Controller\Component\CustomComponent ($config);

我的意见是,这是一种判断。代码就是代码,逻辑就是逻辑。其中一些属于控制器,一些属于模型,一些属于视图。但有些代码需要在任何地方都可以访问。以余弦为例。以今天的日期为例。有什么可能的原因可以仅仅因为我们发明了一种范式而将这些功能限制在MVC范式的一部分呢?它与MVC范式@UncaAlby无关,更与SOLID无关。为什么渲染系统需要了解数学知识?呈现HTML并没有理由了解数学,这是一个好方法,我声明public$components=array(“compo1”);然后我设置组件:$this->set(“compo1”,$this->compo1);成功了!谢谢@Jonathan,在我的代码中使用它之后,我还会推荐帮助者。
$config = new \Cake\Controller\ComponentRegistry();
$CustomComponent = new \App\Controller\Component\CustomComponent ($config);