0

这是我的问题。我有一个表单,我想将数据发送到 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 的开源框架似乎不合逻辑。

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

4

2 回答 2

0

您需要决定是否使用新的 mvc o 旧的。新的对于 REST 来说要好得多。

如果您扩展 JController 而不是 JControllerLegacy 您正在使用新的 MVC。你应该使用 REST 路由和其他与之相关的东西。

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

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

于 2013-08-02T19:42:10.560 回答
0

控制器文件名应该是controls.php

或者

也许如果输出是原始的,请将其命名controls.raw.php&format=raw在末尾添加。

于 2013-08-01T20:12:38.983 回答