2013-08-01 52 views
0

這是我的問題。我有一個表單,我想將數據發送給JSON任務。但是不管我做什麼,任務都不會運行。我只是得到了以下錯誤:Joomla 2.5網站任務不會觸發

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的開源框架似乎不合邏輯。

所以爲了解決這個問題,你需要使用「視圖」作爲「控制器」。

+0

這可能有幫助http://forum.joomla.org/viewtopic.php?p=2282503 –

+0

看到,但似乎不是同一個問題。我會更新問題來澄清,謝謝。 –

+0

不客氣,但我懷疑我可以有任何進一步的幫助,我想我會看到我能在Google上找到你的。祝好運喬丹,歡呼。 –

回答

0

控制器文件名應該是controls.php

OR

也許如果輸出爲原料,將其命名爲controls.raw.php,並在末尾添加&format=raw

+0

試圖刪除.json部分,但還沒嘗試過.raw。 WSIR - 沒有任何運氣,同樣的錯誤沒有改變。 –

+0

也可以嘗試在最後添加&format = raw。 –

+0

'無效的控制器:name ='controls',format ='raw''同樣的事情略有不同的錯誤。 –

0

您需要決定是否使用舊的mvc。對於REST來說,新功能要好得多。

如果擴展JController而不是JControllerLegacy,則使用新的MVC。 YOu應該使用REST路由和其他與之相關的東西。

在新的MVC中,每個控制器設計都有一項任務。例如顯示(獲取),創建(發佈),更新,刪除,然後你可能需要額外的。

因爲郵件不是動詞,所以郵件沒有任何意義。

+0

「郵政」僅僅是一個較短版本的「郵政編碼」,因爲任務是建立在cookie /會話中記錄用戶郵政編碼的。但是我很困惑,你的意思是用遺產代替嗎? –

+0

你看起來像你使用的遺留MVC,所以你應該說 擴展JControllerLegacy nto JController ...看到核心CMS的所有擴展的例子。 – Elin

+0

@Elin:他說他在使用Joomla 2.5,所以沒有新的MVC,因此不需要添加舊版後綴,我是否正確? – mattosmat