【发布时间】:2013-08-02 21:26:40
【问题描述】:
这是我的问题。我有一个表单,我想将数据发送到 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 的开源框架似乎不合逻辑。
因此,为了解决此问题,您需要使用“视图”作为“控制器”。
【问题讨论】:
-
看到这似乎不是同一个问题。我会更新问题以澄清,谢谢。
-
不客气,但我怀疑我能提供任何进一步的帮助,我想我会在 Google 上为你找到什么。祝乔丹好运,干杯。
-
我没有发现你的代码有什么问题,所以我建议你尝试直接从浏览器调用你的任务,你可以使用 firebug 的网络功能来验证你发送的内容和你发送的内容'要回来了。看起来它没有找到您的控制器。 Valentin Despa 是对的,你可以使用 raw 而不是 json,如果你相应地处理事情(比如在 jquery 中指定响应格式),则无需设置标头。
标签: php joomla joomla-task