2010-08-10 54 views

回答

6

對於大多數組件,你可以使用類似:

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

然而,組件意味着共享由控制器使用的功能,所以平時應當避免的看法調用組件。

6

我建議將組件方法包裝在幫助器中,然後使用通常的路徑訪問幫助器。

+0

感謝@Jonathan,我也在我的代碼使用後建議幫手。 – 2017-12-07 13:32:09

0

我認爲這不是一個好習慣。將設計視爲設計師應該使用的一種視圖。如果可能的話,您希望將代碼保存在模型和控制器中。如果它與可重用的視圖內容有關,請考慮將控制器移動到元素或助手,因爲這是他們的目標。

如果您提供了更多詳細信息,我們可以更具體地說明如何實現某些功能,如果您已經擁有我們可以參考的代碼庫。

+0

我的意見是,這是一個判斷的呼籲。代碼是代碼,邏輯是邏輯。它的一些屬於控制器,一些屬於模型,另一些屬於視圖。但**一些**代碼需要在任何地方**訪問**。以**餘弦**爲例。以**今天的日期**爲例。有什麼可能的原因可以限制這些功能只是MVC範例的一部分,因爲我們已經發明瞭一個範例? – UncaAlby 2016-08-22 21:11:41

+0

它與MVC範例@UncaAlby和更多關於SOLID無關。爲什麼渲染系統需要知道做數學?渲染HTML沒有理由知道數學。 – 2016-08-24 17:56:25

5

一切都是可能的!

組件:

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

查看:

<?php $YourComponent->doAction() ... ?> 
+0

這是好方法,我聲明public $ components = array(「compo1」);然後我設置組件:$ this-> set(「compo1」,$ this-> compo1);有效! – Phuong 2016-12-21 04:50:34

相關問題