2011-05-22 83 views
2

我是Zend FW的新手。我正在尋找一個名爲Feedparsercontroller的indexAction的控制器中編寫一個簡單的feedparser。但我想在我的索引頁面上將解析的提要輸出顯示爲一個小部件。我如何將輸出/變量數據驅動到我的索引視圖?Zend Framework:在索引視圖中引入其他控制器

以下是我的解析器。

class FeedparserController extends Zend_Controller_Action { 

public function init() { 
    /* Initialize action controller here */ 
} 

public function indexAction() { 

    $feedUrl = 'http://feeds.feedburner.com/ZendScreencastsVideoTutorialsAboutTheZendPhpFrameworkForDesktop'; 
    $feed = Zend_Feed_Reader::import ($feedUrl); 

    $this->view->gettingStarted = array(); 
    foreach ($feed as $entry) { 
     if (array_search ('Getting Started', $entry->getCategories()->getValues())) { 
      $this->view->gettingStarted [$entry->getLink()] = $entry->getTitle(); 
     } 
    } 
} 

} 

我想實現與我的登錄,註冊控制器相同。

+2

如果你不想通過url調用這些控制器,只想讓它們成爲小部件,你不需要把這些東西放到控制器中。只需編寫您自己的域對象並將其包含在您的視圖中。 – 2011-05-22 08:00:35

+0

你好, 感謝您的回覆, 我想在不同的控制器使用它因爲我想重用解析器,說運行作爲一個cron作業從飼料中獲取結果,int未來。所以我想用它作爲一個不同的控制器,並將數據路由到索引視圖 – 2011-05-22 08:26:57

回答

2

也許我不完全理解你的問題。

但是,這裏最好的辦法似乎是創建一個單獨的feed控制器,它獨立負責與feed相關的業務邏輯(檢索,按摩,設置查看等)。

然後,創建一個包含javascript代碼的部分來調用feed控制器,然後輸出您期望的窗口小部件。這樣做有一些好處。

  1. 它集中飼料相關的邏輯
  2. 它可以讓你把原料部件,無論你想
  3. 這是一個SOA的做法,通常是一件好事

希望這有助於!

+0

感謝您的回覆, 我有同樣的想法,使用Ajax,但有沒有「最常用的」方法來使它安全,我的意思是,我將解析feed並應用我的算法從feed中獲取有用的項目,然後將它放到頁面mystery.com/feedparser/jsonview,我如何使用Zend遠程調用它。 – 2011-05-24 22:42:39

+0

Hi Eswar, 一般來說,這種保護是系統防火牆的工作,而不是應用程序本身。如果您正在進行AJAX調用,那麼對控制器的所有調用都將來自外部源,除非這是一個內部應用程序。 – 2011-05-25 02:21:02

+0

非常感謝您的回覆。 – 2011-06-01 04:07:00

0

視圖助手怎麼樣?

你可以閱讀一下View Helpers in Zend Framework

+0

謝謝,我是Zend Framework的新手,我會詳細閱讀Helpers,看看它是否有幫助。 – 2011-05-24 22:46:33

1

我覺得跟小部件的最佳邏輯阿賈克斯

使用部分JS 部件庫(也許jQuery UI的舉例),然後使這些部件通過一些Ajax查詢被加載,返回HTML,這允許您以及簡單的部件重裝behviours(不relaoding整個頁面)。

在服務器端,您需要允許通過ajax請求調用您的控制器/操作並僅發送html片段(而不是包含所有佈局的整個頁面)。

這樣做檢查ContextSwitch and AjaxContext動作助手。您將告訴您的FeedparserController,索引操作可以在XMLHHTTPRequest中用/ format/html調用,並且在這種情況下,視圖幫助器將會是索引。

在init部分,你會說的indexAction可以以Ajax模式被調用,渲染HTML片段( 'HTML'):

$Ajaxcontext = $this->_helper->getHelper('AjaxContext'); 
$Ajaxcontext->addActionContext('index', 'html') 
      ->initContext(); 

現在只需重命名你的視圖腳本feedparser/index.phtmlfeedparser/index.ajax.phtml

在indexAction,做你的東西,並輸出你想要的視圖腳本,不要考慮佈局組合問題,你獨自使用自己的佈局部分,並在js端完成組合。

在JavaScript部分,確保您通過ajax($ .load或$。AJAX與jQuery也許)格式/ HTML作爲參數(所以http://example.com/feedparser/index/format/html

URL請注意,在我看來你應該使用JSON響應,而不是HTML,也許JSON與一些HTML裏面。但這是一個關於如何控制你的ajax通信(以及處理錯誤,重定向等等,這是另一個主題)的問題。

+0

非常感謝您的回覆, 我有同樣的想法,使用Ajax,但是有沒有「最常用的」方法來保證它的安全,我的意思是,我將解析feed並應用我的算法從飼料,並把它放到一個頁面說mysite.com/feedparser/jsonview,我怎樣才能保護它從遠程調用使用Zend。 – 2011-05-24 22:45:24

+0

@Eswar Rajesh Pinapala:這是另一個問題:-)檢查示例http://stackoverflow.com/questions/2982284/securing-an-ajax-api-to-prevent-other-sites-from-taking-advantage-它的 – regilero 2011-05-25 07:57:40

+0

非常感謝您的迴應。 – 2011-06-01 04:07:12

相關問題