我有一个自定义的Joomla 3.4.1组件,它有一个以JSON格式(来自views / myview / view.json.php文件)或HTML(来自views / myview / view.html.php文件)显示数据的视图)格式。有没有办法如何将默认视图的格式从HTML更改为JSON,以便
http://example.com/component/mycomponent/myview
在以下情况下返回JSON数据而不是HTML:
http://example.com/component/mycomponent/myview?format=html
仍会返回视图的HTML模板吗?
编辑:
据我所知,这是路由器:
function TouristGuideParseRoute($segments) {
$count = count($segments);
$parameters = array();
if ($count > 0) {
$parameters['view'] = $segments[0];
}
if ($count > 1) {
$parameters['task'] = $segments[1];
}
if ($count > 2) {
$parameters['id'] = $segments[2];
}
if ($count > 3) {
$parameters['format'] = $segments[3];
}
if (($parameters['view'] == 'api') && empty($parameters['format'])) {
$application = JFactory::getApplication();
$input = $application->input;
$parameters['format'] = $input->getString('format', 'json');
}
return $parameters;
}
即使URL包含?format=html
,也显示JSON格式,因为在此路由器中$application->input
为空(可能稍后在Joomla请求处理链中填充),因此$input->getString('format','json')
返回{{1}一直都是。
答案 0 :(得分:2)
在您的控制器中,手动设置默认格式(Joomla 3)
DraggableViewBackground *draggableBackgroundforurl = [[DraggableViewBackground alloc]initWithFrame:self.view.frame];
希望这可以提供帮助。
答案 1 :(得分:0)
如果您的自定义组件有一个路由器(我假设您的示例网址),那么您将默认设置为JSON。
在PARSE功能中,您需要设置...
$vars['format'] = 'json';
在Joomla Docs上查看这个半流程教程。 然后/或做一些像......
$jinput = JFactory::getApplication()->input;
$outputFormat = $jinput->getString('format', 'json');
$vars['format'] = ($outputFormat == 'json') ? 'json' : 'html';`
请注意,我正在使用一个中间变量并根据默认值(第2行)进行检查,以便将其约束为两个特定选项(用户无法键入?format=blahblah
并让路由器弄乱{ {1}}。