0

我在 Joomla 中的一个组件有问题我想在组件启动时调用其他函数

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

这里我想调用一个函数在数据库中只选择一项而不是全部

试试这个

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

在我的

class ProductosController extends JController
{

function Other(){
...
}

}

但是我的代码永远不会通过其他功能。

怎么了?

4

2 回答 2

1

JFactory::getApplication()->input->get('task')将返回一个控制器/函数对或仅返回一个函数名称。如果它是一个控制器/函数对,它将以这种格式返回一个字符串:'controller.function'。注意一个时期的分离。如果返回一个函数,它只是函数名。

您对脚本所做的修改导致它查找名称为“other”而不是名称“task”的请求变量(即 post 或 get 变量)。(Task 是传递任务的标准 Joomla 变量。)

If you actually wanted to always call that particular function you would change the line to this:

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

Likewise, you could also just adapt the page that is calling this, so that the url either contains task=productos.other or there is a hidden input form field like such:

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

The better way of call the controller method is:

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

using getCmd() call the controller task, and task is not pass in url so you do not get the task using get() method.

Try this code and get the solution of your problem.

于 2014-12-24T05:05:08.120 回答