我正在使用Zend框架,並且大部分操作控制器都返回了XML響應。 爲了做到這一點,我必須初始化上下文切換並提供URL後綴「?format = xml」來調用每個動作。在Zend框架中將默認上下文設置爲XML
有沒有什麼方法可以使這個默認?所以我不必爲每個網址添加這個後綴?
問候,Andree。
我正在使用Zend框架,並且大部分操作控制器都返回了XML響應。 爲了做到這一點,我必須初始化上下文切換並提供URL後綴「?format = xml」來調用每個動作。在Zend框架中將默認上下文設置爲XML
有沒有什麼方法可以使這個默認?所以我不必爲每個網址添加這個後綴?
問候,Andree。
EXTRA EXTRA ..查看全部關於IT!
http://framework.zend.com/manual/en/zend.controller.actionhelpers.html
看一看ContextSwitch裏和AjaxContext
(編輯),建議你用:
在某些情況下,你可能想強制使用上下文;例如,如果激活上下文切換,您可能只想要允許XML上下文。您可以通過將上下文傳遞給initContext()來完成此操作:
$ contextSwitch-> initContext('xml');
如何在控制器的init()
方法中明確設置參數format
?
$this->getRequest()->setParam('format', 'xml');
...必須有這樣做的不是那麼懶辦法,但...
是的,它的工作。謝謝! 仍然希望如果有任何少hacky解決方案雖然; p – Andree 2010-06-05 10:48:53
嗨,我有不同的情況...我希望這樣的url必須是:format.xml或abc.xml,但呈現的輸出必須是XML格式。我能做些什麼來實現這一目標? – 2011-02-08 06:15:31
我在視圖phtml頁面添加了一個標題:content-type:text/xml後得到了xml輸出。 – 2011-02-09 04:04:19
或者,你可以使用類似下面的設置默認,但仍允許其他情況下通過「格式」參數設置爲:
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$currentContext = $ajaxContext->getCurrentContext();
if (empty($currentContext)) {
$ajaxContext->initContext('xml');
}
此代碼可以放置在你的管制員的init(),這將設置所有操作的默認背景。它也可以放在單獨的操作中,以每個操作爲基礎設置默認上下文。
請注意,您也可以使用此參數更改名稱不是「格式」以外的東西:
$ajaxContext->setContextParam('type');
然後,你可以調用與「/控制器/動作/類型/ XML」你的行動。
如果您不想在每個控制器init中設置參數,也可以將參數設置爲全局路由參數。在你的引導拉動路由器實例,並調用
$router->setGlobalParam('format', 'xml');
或者你也可以在定義的路由設置的默認值,或者可能是如果您的網址在任何地方使用默認的路由器,你的名爲PARAMS /格式/ XML之後。
您是否找到了較少破解的解決方案? – Zoborg 2011-01-28 13:44:32