2010-02-12 62 views
1

我想執行的佈局呈現的右之前的一些代碼,執行其他所有代碼之後。我會在哪裏放置該代碼?Zend框架 - 最後代碼來執行佈局之前被渲染

我特別想他們正在使用的佈局之前修改在headLink地,HeadScript,並且將InlineScript視圖助手引用的文件。

下面是步驟我想借此:

  1. 遍歷文件中的視圖助手
  2. 充分利用本地文件的列表
  3. 從視圖助手刪除本地文件
  4. 引用本地文件列表作爲參數,結合他們一個HTTP請求
  5. 添加新的腳本引用結合到相應的視圖助手服務器腳本

它不會出現一個前端控制器插件會幫助我實現這一點,這裏的原因:

  1. postDispatch()多數民衆贊成執行的每個控制器動作之後被執行,而我需要的樣式表/ JavaScript的
  2. dispatchLoopShutdown()獲取控制器動作循環後執行,但佈局已經在這一點上
渲染的完整列表210

由於Rufinus的建議,我通過擴展視圖助手解決了這個。 My question from that angle as well as the solution is here

+0

你做知道你可以在你的控制器動作中修改頭部*例如$這 - >查看 - >用HeadScript() - > appendFile( '/ JS/whatever.js'); – Rufinus 2010-02-13 16:11:13

+1

是的,我這樣做,並使用該功能。我已經更新我的文章,以更具體。 – Sonny 2010-02-14 12:45:20

+0

好吧,現在我知道你在做什麼。我最好的建議是擴展視圖助手。涉及的視圖助手使用佔位符容器視圖助手。通過擴展這些類,應該可以做到你想要的。 (但是,說實話,我看不出有什麼大的好處在裏面,它會更好,如果你使用一個小的失重HTTP守護在類似lighttpd只服務於這個靜態文件。 – Rufinus 2010-02-15 23:12:51

回答

13

ZF1 Dispatch Process Overview (c) by Thorsten Ruf

看到Orginal PDF created by Thorsten RufMirror

您可以通過插件訪問的最後部分應dispatchLoopShutdown

編輯: 對於ZendFramework2看到http://zendframework2.de/en/cheat-sheet.htmlthis gdoc

+0

很不錯的流程圖!我如何獲取代碼不明然後在這個階段執行我已經更新了我的帖子來澄清我正在努力完成的任務 – Sonny 2010-02-12 17:32:56

+1

Oooh,很好,我希望他們能讓它變得更大一點 – 2010-02-12 18:44:04

+1

Zend_Controller_Action :: dispatch()調用postDispatch ()調用的操作方法後,它破壞了動作控制器實例之前,你可以在你的動作控制器覆蓋postDispatch()方法進行更改渲染(它爲此目的而設置之前查看。)我認爲你必須使用一個前端控制器插件在調度循環關閉期間使事情發生... – 2010-02-12 18:55:35