1

私はここのドキュメントに従って、 (改善された)ファイルアップロードセクションを既存のコンポーネントに追加しました。

上記の例のコントローラー/モデルへのリンクは、アップロードを処理するために、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これも機能しません

4

1 に答える 1

1

index.phpで以下の変数を定義する必要があります

define('_JREQUEST_NO_CLEAN', 1);

私は原因を探していました、そして私はこれを見つけました-http ://docs.joomla.org/Framework_Compatibility

注-これが機能しない場合は、を削除して"format" : "raw"ください。

動作しない場合はお知らせください。

于 2013-02-06T10:15:36.530 に答える