我所看到的控制器,其中,在他們的indexAction()方法,他們這樣做回聲的一些基本的例子「這是一個索引行動」。但在實際應用中,將在該方法返回一個HTML長字符串,從<HTML>?在Magento中,控制器通常會做什麼?
謝謝。
我所看到的控制器,其中,在他們的indexAction()方法,他們這樣做回聲的一些基本的例子「這是一個索引行動」。但在實際應用中,將在該方法返回一個HTML長字符串,從<HTML>?在Magento中,控制器通常會做什麼?
謝謝。
你見過的例子只是向您展示在控制器代碼執行。什麼你應該在Magento的控制器做的是
從請求(GET,POST等)
告訴Magento的加載和渲染的佈局將操縱基於價值模型彌補響應
佈局/塊系統從系統模型類直接讀取,所以沒有必要做控制器相關的任何輸出(這不是100%正確的,但如果你知道原因是不是100%真實的,你不需要閱讀這些答案)
如果你看看Magento的核心控制器,你會大多與
$this->loadLayout();
$this->renderLayout();
結束這些是開始輸出線。不需要echo
。
在現實中,大多數控制器使用XML佈局產生了一系列應在頁面上顯示的邏輯塊,然後渲染這些塊遞歸構建頁面。請注意,它們實際上不會返回該字符串,並且佈局類負責將輸出放到正確的位置。這是你通常會看到這種情況下,代碼:
$this->loadLayout();
$this->renderLayout();
利用回聲是一個快速的簡寫,它讓開發者暫時忽略整個佈局系統和只專注於觸發正確的動作。
希望掃清了一點東西!
謝謝, 喬
謝謝您的回答,樂於助人一如既往。我發現它是程序員偏好的問題,應該在Controller還是Block中執行Model操作。毫無疑問,業務邏輯的訪問控制和執行屬於控制器(恕我直言),但加載,分頁,排序,過濾模型數據等內容通常在塊中執行。但是,這是一條灰線。你能擴大你的答案來解決這個灰線嗎? – 2011-04-27 06:52:30
謝謝。任何你可以解釋loadLayout調用的佈局的機會?那裏有太多的信息,但沒有一個好的資源。自定義模塊只能有一個佈局還是可以有多個佈局?它應該定義在哪裏?我猜在config.xml中,但在adminhtml部分或前端部分?佈局文件在文件系統中的位置在哪裏?我一直在尋找一篇體面的文章來解釋這個簡潔,但沒有運氣。 – user725968 2011-04-27 17:07:05
@user我已經花了近3年來解釋。從Magento開始爲MVC開發人員開始。 http://alanstorm.com/category/magento然後購買這本書http://store.pulsestorm.net/products/no-frills-magento-layout – 2011-04-27 17:18:59