私はここのドキュメントに従って、 (改善された)ファイルアップロードセクションを既存のコンポーネントに追加しました。
上記の例のコントローラー/モデルへのリンクは、アップロードを処理するために、postパラメーターを介して形成されます。
post_params:
{
"option" : "com_mycomponent",
"controller" : "mycontroller",
"task" : "mytask",
"id" : "'.$myItemObject->id.'",
"'.$session->getName().'" : "'.$session->getId().'",
"format" : "raw"
},
私の問題は、Joomla2.5で導入された新しいコントローラーメソッドを使用してアップロードが機能しないことです。
// Get an instance of the controller prefixed by the component
$controller = JController::getInstance('mycomponent');
// Perform the Request task
$controller->execute(JRequest::getCmd('task'));
// Redirect if set by the controller
$controller->redirect();
これは(そして実際にJoomla 2.5で)機能しましたが、コントローラーをロードするための古い1.5の方法では完全に正常に機能します。
// Create the controller
$classname = 'mycomponentController'.$controller;
$controller = new $classname( );
// Perform the Request task
$controller->execute( JRequest::getVar('task'));
// Redirect if set by the controller
$controller->redirect();
この後者の方法はJoomla2.5と互換性がありますが、残念ながら、これを統合したいコンポーネントは新しい方法を使用します。これを変更したくないので、毎回変更することなく、必要に応じてコンポーネントを更新し続けることができます。また、変更した場合、既存の機能が失われる可能性があると思います。
基本的に、新しいコントローラーメソッドが正しく呼び出されるようにpostパラメーターを設定する方法を知りたいです!
編集
それ以来、次のpostparam構成を使用してみました。
post_params:
{
"option" : "com_mycomponent",
"task" : "mycontroller.mytask",
"id" : "'.$myItemObject->id.'",
"'.$session->getName().'" : "'.$session->getId().'",
"format" : "raw"
},
などの線に沿ってリンクをエミュレートしようとしましたが、index.php?option=com_mycomponent&task=mycontroller.mytask
これも機能しません