繁体   English   中英

Joomla 2.5站点任务将不会触发

[英]Joomla 2.5 site task will not fire

这是我的问题。 我有一个想要将数据发送到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的开放源代码框架似乎是不合逻辑的,因此我有可能被错误和误导测试。

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

控制器文件名应为controls.php

要么

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

您需要确定是否使用新的mvc或旧的。 对于REST,新功能要好得多。

如果扩展了JController而不是JControllerLegacy,则使用的是新的MVC。 您应该使用REST路由以及随之而来的其他功能。

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

邮政不是任务,因为它不是动词,所以没有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM