将Zend框架中的默认上下文设置为XML

时间:2010-06-04 08:52:21

标签: php xml zend-framework

我正在使用Zend框架,而且我已经返回了大部分动作控制器的XML响应。 为此,我必须初始化上下文切换并提供URL后缀“?format = xml”来调用每个动作。

有没有办法让这个默认?所以我不必为每个URL添加这个后缀吗?

问候,Andree。

4 个答案:

答案 0 :(得分:7)

EXTRA EXTRA ..阅读所有关于它的信息!

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html

查看 ContextSwitch和AjaxContext

(编辑)建议您使用:

  

在某些情况下,您可能希望强制使用上下文;例如,如果激活了上下文切换,您可能只想允许XML上下文。您可以通过将上下文传递给initContext():

来实现      

$ contextSwitch->调用initContext( 'XML');

答案 1 :(得分:3)

如何在控制器的format方法中明确设置参数init()呢?

$this->getRequest()->setParam('format', 'xml');

......必须有一种不那么懒惰的做法,不过......

答案 2 :(得分:0)

或者,您可以使用以下内容设置默认值,但仍允许通过“format”参数设置其他上下文:

$ajaxContext = $this->_helper->getHelper('AjaxContext');
$currentContext = $ajaxContext->getCurrentContext();
if (empty($currentContext)) {
    $ajaxContext->initContext('xml');
}

此代码可以放在控制器的init()中,这将为所有操作设置默认上下文。它也可以放在单独的操作中,以基于每个操作设置默认上下文。

请注意,您还可以使用以下参数名称将参数名称更改为“格式”:

$ajaxContext->setContextParam('type');

然后你可以用'/ controller / action / type / xml'来调用你的动作。

答案 3 :(得分:0)

如果您不想在每个控制器init中设置参数,您还可以将参数设置为全局路径参数。在你的引导程序中拉出路由器实例并调用

$router->setGlobalParam('format', 'xml');

或者您可以在您定义的路由中设置默认值,或者可以在命名的params / format / xml之后在网址中的任何位置使用默认路由器。

相关问题