开始编辑
好的,所以下面的工作,但我找到了一个更好的方法。在你的控制器做...
if (JRequest::getVar('format') != 'raw') {
$url = JURI::current() . '?' . $_SERVER['QUERY_STRING'] . '&format=raw';
header('Location: ' . $url);
// or, if you want Content-type of text/html just use ...
// redirect($url);
}
结束编辑
您可以按照 Babur Usenakunov 的建议将“tmpl”设置为“组件”,在这种情况下,可能会加载脚本和 css,例如...
JRequest::setVar('tmpl','component');
但是,如果您想创建原始输出,您可以添加 &format=raw 或在您的组件中创建 'raw' 类型的视图 ...
不幸的是,我能找到正确制作原始渲染视图类型的唯一功能方法是在视图类调用 parent::display() 之后调用 exit() ...
在你的controller.php ...
class com_whateverController() extends JController
{
function __construct()
{
// the following is not required if you call exit() in your view class (see below) ...
JRequest::setVar('format','raw');
JFactory::$document = null;
JFactory::getDocument();
// or
//JFactory::$document = JDocument::getInstance('raw');
parent::__construct();
}
function display()
{
$view = $this->getView('whatever', 'raw');
$view->display();
}
}
然后在views/whatever/view.raw.php ...
class com_whateverViewWhatever extends JView
{
public function display($tpl = null)
{
parent::display();
exit; // <- if you dont have this then the output is captured in and output buffer and then lost in the rendering
}
}