Joomla 2.5网站任务不会开火

时间:2013-08-01 19:25:46

标签: php joomla joomla-task

这是我的问题。我有一个表单,我想将数据发送到JSON任务。但无论我做什么,任务都不会运行。我刚收到以下错误:

Invalid controller: name='controls', format='json'

据我所知,没有任何东西可以阻止控制器运行。这是代码。

class HelloWorldControllerControls extends JController{
    /*function __construct(){
        parent::__construct();
    }*/
    public function postal(){
        JFactory::getDocument()->setMimeEncoding( 'application/json' );
        JResponse::setHeader('Content-Disposition','attachment;filename="status.json"');
        //$postal = JRequest::getVar('postal_code',false);
        //$dispatcher = JDispatcher::getInstance();
        //$saveLocalCookie = $dispatcher->trigger('onSavePostalCode', array('code'=>$postal));
        echo json_encode(array('success'=>true));
        jexit();
    }
}

这当然位于网站controllers文件夹中,名为controls.json.php

我已将此与我在管理面板中使用的另一个控制器相匹配,它实际上完全相同,但它适用于管理员,而不是网站。

我用来试图调用它的JRoute是。

index.php?option=com_helloworld&task=controls.postal&format=json

我可能会忽视什么?

编辑:

为了澄清,我需要直接调用任务,因为我将要做的就是以JSON格式输出原始数据,不需要视图,只需要模型和控制器。目前,由于我还在测试,因此不需要该模型。

编辑2:

找到答案的一部分,但我会打开它,因为这个答案并不是那么好。根据Joomla如何在“站点”部分设置MVC(基于我的测试),这是不可能的。它总是首先查找视图,然后是控制器。我只能通过确保设置视图来解决任务。有可能我错了并且误导了我的测试,因为没有正确构建MVC的开源框架似乎是不合逻辑的。

因此,为了解决此问题,您需要使用“视图”作为“控制器”。

2 个答案:

答案 0 :(得分:0)

控制器文件名应为controls.php

OR

如果输出是原始输出,请将其命名为controls.raw.php并在结尾添加&format=raw

答案 1 :(得分:0)

你需要决定是否使用新的mvc o。 REST的新功能要好得多。

如果扩展JController而不是JControllerLegacy,则使用新的MVC。你应该使用REST路由以及其他的东西。

在新的MVC中,每个控制器设计有一个任务。例如显示(获取),创建(发布),更新,删除,然后您可能需要其他的。

邮政作为一项任务没有意义,因为它不是一个动词。