2010-02-26 60 views
0

我想弄清楚Magento的調度系統是如何工作的。Magento調度外應用程序

我想從應用程序目錄外部分發佈局的某個部分(例如body)。

我到目前爲止;

<?php 
$app   = Mage::app(); 
$myRequestUri = '/checkout/cart'; 

$front  = $app->getFrontController(); 
$request  = $front->getRequest(); 

$request->setRequestUri($myRequestUri); 

// dispatch everything 
$front->dispatch(); 
?> 

調度運行良好,但我需要將其剝離到正文或某個塊。 也應該返回生成的HTML,而不是直接輸出它(最好不要使用輸出緩衝)。

//羅蘭

編輯: 我已經添加了我所取得的進展,STIL給我留下了一些問題。

+0

根據您的意見更新 – 2010-03-01 15:01:51

回答

1

我還沒有試過這個,但你可以打破常規,只是把你自己的網址粉碎成$ _SERVER ['REQUEST_URI']。它被認爲是不好的形式,但我會在黑客入侵之前這樣做。

編輯: 根據你的編輯,很高興你得到一些迴應。所以現在的問題是,你有所有的HTML在頁面上返回?對於某些頁面,去除HTML可能沒有意義。我們實際上試圖檢索哪些信息。

所以,如果你真的需要去掉一個頁面,你需要做的是修改頁面的佈局。這些信息存儲在佈局xml文件中。這需要進行一些修改,但是我們的想法是添加一個檢查命令行操作的模塊(isset($ _ SERVER ['argc'])可以工作),然後加載一個自定義句柄($this->getLayout()->getUpdate()->addHandle('my_custom_handle');)回顯標題信息的phtml文件。這將會有問題,可靠地執行並且不會破解核心文件,所以我建議您在默認情況下創建一個沒有信息的新頁面。

希望幫助, 喬

+0

我做了一些progess和編輯我的文章。 – 2010-02-26 13:18:58

0

謝謝你幫我走出喬,在我做了,再此期間,有很大進步,但仍存在尚未;-)

什麼其實我是想要實現的是任何一個magento頁面都可以派發。例如,對/ customer/account/login有效的http post請求仍應該登錄我。

除了呈現響應的主體外。我不希望佈局默認呈現,而是我想以編程方式獲取一個塊(在相應的請求佈局xml中定義)。

短代碼示例,我如何看它。

<?php 
// code from previous post 
// - load, set request uri, dispatch 

$someBlock = getABlock('breadcrumbs'); // e.g. name attribute value in the xml 
echo $someBlock->toHtml(); 
?> 

最好將本地代碼池處理這個,但林不知道這是一個好主意來擴展(如果可能的話)的前端控制器。

我不知道佈局更新句柄..佈局可以更新?他們是什麼意思...