【问题标题】:component joomla组件 joomla
【发布时间】:2013-01-24 12:28:19
【问题描述】:

我在 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(){
...
}

}

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

怎么了?

【问题讨论】:

    标签: joomla joomla2.5


    【解决方案1】:

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

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

    如果你真的想总是调用那个特定的函数,你可以把这一行改成这样:

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

    同样,您也可以只调整调用它的页面,以便 url 包含 task=productos.other 或者有一个隐藏的输入表单字段,如下所示:

    <input type="hidden" name="task" value="productos.other" />
    

    【讨论】:

      【解决方案2】:

      调用控制器方法更好的方法是:

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

      使用getCmd()调用控制器任务,并且任务没有传入url,所以使用get()方法无法获取任务。

      试试这个代码并得到你的问题的解决方案。

      【讨论】:

        猜你喜欢
        • 2011-07-02
        • 2011-02-16
        • 2011-10-28
        • 2013-03-10
        • 2013-05-01
        • 2012-07-13
        • 2013-01-21
        • 2011-12-26
        • 2012-01-05
        相关资源
        最近更新 更多