我正在使用Zend框架,而且我已经返回了大部分动作控制器的XML响应。 为此,我必须初始化上下文切换并提供URL后缀“?format = xml”来调用每个动作。
有没有办法让这个默认?所以我不必为每个URL添加这个后缀吗?
问候,Andree。
答案 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之后在网址中的任何位置使用默认路由器。