【发布时间】:2015-06-16 13:09:56
【问题描述】:
我有一个自定义的 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') 始终返回 json。
【问题讨论】:
-
您可以直接将您的json数据回显到视图模板的php文件中。
-
我知道但这并不能解决问题,当默认格式为 HTML 时,Joomla 页面框架(在 HTML 中)会自动附加到响应中。此外,由于 HTML 格式是默认的,我如何检查是否在没有指定格式的情况下请求了视图? JFactory::getApplication()->input->get('format')中有'html'。
标签: php model-view-controller joomla joomla3.0 joomla-extensions