これが私の問題です。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 を正しく構築していないオープン ソース フレームワークは非論理的であるように思われるため、私が間違っていたり、テストから誤解されたりする可能性があります。
したがって、これを修正するには、「ビュー」を「コントローラー」として使用する必要があります。