2011-04-26 26 views
1

我所看到的控制器,其中,在他們的indexAction()方法,他們這樣做回聲的一些基本的例子「這是一個索引行動」。但在實際應用中,將在該方法返回一個HTML長字符串,從<HTML>?在Magento中,控制器通常會做什麼?

謝謝。

回答

1

你見過的例子只是向您展示在控制器代碼執行。什麼你應該在Magento的控制器做的是

  1. 從請求(GET,POST等)

  2. 告訴Magento的加載和渲染的佈局將操縱基於價值模型彌補響應

佈局/塊系統從系統模型類直接讀取,所以沒有必要做控制器相關的任何輸出(這不是100%正確的,但如果你知道原因是不是100%真實的,你不需要閱讀這些答案)

如果你看看Magento的核心控制器,你會大多與

$this->loadLayout(); 
$this->renderLayout(); 

結束這些是開始輸出線。不需要echo

+1

謝謝您的回答,樂於助人一如既往。我發現它是程序員偏好的問題,應該在Controller還是Block中執行Model操作。毫無疑問,業務邏輯的訪問控制和執行屬於控制器(恕我直言),但加載,分頁,排序,過濾模型數據等內容通常在塊中執行。但是,這是一條灰線。你能擴大你的答案來解決這個灰線嗎? – 2011-04-27 06:52:30

+0

謝謝。任何你可以解釋loadLayout調用的佈局的機會?那裏有太多的信息,但沒有一個好的資源。自定義模塊只能有一個佈局還是可以有多個佈局?它應該定義在哪裏?我猜在config.xml中,但在adminhtml部分或前端部分?佈局文件在文件系統中的位置在哪裏?我一直在尋找一篇體面的文章來解釋這個簡潔,但沒有運氣。 – user725968 2011-04-27 17:07:05

+0

@user我已經花了近3年來解釋。從Magento開始爲MVC開發人員開始。 http://alanstorm.com/category/magento然後購買這本書http://store.pulsestorm.net/products/no-frills-magento-layout – 2011-04-27 17:18:59

2

在現實中,大多數控制器使用XML佈局產生了一系列應在頁面上顯示的邏輯塊,然後渲染這些塊遞歸構建頁面。請注意,它們實際上不會返回該字符串,並且佈局類負責將輸出放到正確的位置。這是你通常會看到這種情況下,代碼:

$this->loadLayout(); 
$this->renderLayout(); 

利用回聲是一個快速的簡寫,它讓開發者暫時忽略整個佈局系統和只專注於觸發正確的動作。

希望掃清了一點東西!

謝謝, 喬

相關問題