0

Joomlaのコンポーネントに問題がありますコンポーネントの起動時に他の関数を呼び出したい

$controller = JController::getInstance('Productos');
$controller->execute(JFactory::getApplication()->input->get('task'));
$controller->redirect();

ここでは、データベースですべてではなく1つの項目のみを選択する関数を呼び出します。

Yこれを試してみてください

$controller->execute(JFactory::getApplication()->input->get('other'));

そして私の中で

class ProductosController extends JController
{

function Other(){
...
}

}

しかし、私のコードは他の関数に渡されません。

なにが問題ですか?

4

2 に答える 2

1

JFactory::getApplication()->input->get('task')コントローラー/関数のペアまたは関数名のみを返します。コントローラー/関数のペアの場合、「controller.function」の形式で文字列を返します。ピリオドの分離に注意してください。関数を返す場合は、関数名だけになります。

スクリプトに加えた変更により、"task" という名前ではなく "other" という名前のリクエスト変数 (つまり、post または get 変数) が検索されるようになりました。(タスクは、タスクを渡すための標準の Joomla 変数です。)

実際にその特定の関数を常に呼び出したい場合は、行を次のように変更します。

$controller->execute('Productos.other');

同様に、これを呼び出しているページを調整して、URL にtask=productos.other次のような非表示の入力フォーム フィールドが含まれるか、存在するようにすることもできます。

<input type="hidden" name="task" value="productos.other" />
于 2013-02-08T23:06:16.420 に答える
0

コントローラー メソッドを呼び出すより良い方法は次のとおりです。

$controller = JControllerLegacy::getInstance('Other');
$controller->execute(JFactory::getApplication()->input->getCmd('task'));

コントローラータスクをgetCmd()呼び出しますが、タスクはURLに渡されないため、メソッドを使用してタスクを取得できませんget()

このコードを試して、問題の解決策を見つけてください。

于 2014-12-24T05:05:08.120 に答える