我正在尝试使用以下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调用。 我在这里做错了什么?
答案 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()
方法。