Joomla:错误500请求子控制器响应时未找到视图

时间:2013-10-28 22:55:36

标签: php ajax joomla

我正在尝试使用以下url从子控制器返回任务的结果:

index.php?option=com_example&task=subctrl.test&format=json

但我不断收到500 View not found错误...

class ExampleControllersSubctrl extends JControllerForm
{
    public function test()
    {
                $result= array("val1","val2");
        echo json_encode($result);
    }
}

我尝试过将子控制器文件命名为Subctrl.php& Subctrl.json.php但都没有奏效。我相信我不应该根据我读过的其他SO帖子来呈现结果,但可能是不正确的。

当我开始工作时,此设置最终将用于返回Ajax调用。 我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

在echo语句之后添加一个exit语句,或者Joomla将继续处理该组件并尝试调用视图。由于未设置视图值,因此不会找到任何视图,系统将重定向到错误页面。完整代码如下:

class ExampleControllerSubctrl extends JControllerForm
{
    public function test()
    {
        $result= array("val1","val2");
        echo json_encode($result);
        exit();
    }
}

Joomla还可以使用其他一些方法,例如致电jexit()JFactory::getApplication()->close()。一般的想法是让应用程序停在这里。继续是一种浪费。

另外,必须确保类名设置正确。中间工作应该是Controller而不是Controllers

答案 1 :(得分:1)

问题是,您正在展开JControllerForm,如果未提供view,我会尝试猜测form。{/ p>

在Joomla 2.5上,您可以将JControllerForm更改为JController,这样就可以解决问题。

由于您有一个JSON控制器,Joomla通过format=json将您转接到您,您也不需要退出test()方法。