【问题标题】:How does JToolBarHelper method work?JToolBarHelper 方法是如何工作的?
【发布时间】:2026-02-22 04:20:03
【问题描述】:

几周以来,我一直在努力了解 JtoolBarHelper 方法的工作原理。

您可以像这样看到视图类中调用的方法:

JToolBarHelper::addNew('controllername.methodname');

这里,JToolBarHelper 的 addNew 方法使用如下:

public static function addNew($task = 'add', $alt = 'JTOOLBAR_NEW', $check = false)
{
    $bar = JToolBar::getInstance('toolbar');
    // Add a new button.
    $bar->appendButton('Standard', 'new', $alt, $task, $check);
}

所以,现在检查 JToolBar 的 getInstance 方法:

它返回new JToolBar($name);。我还确保检查构造函数。但是我无法找到 addNew() 方法参数是如何分离的,即。 Joomla 怎么知道点前面的名字是控制器名,后面的名字是它的方法名。

我还检查了 Joomla.submmitbutton('controllername.methodname'); 的 javascript 代码,但找不到。

那么,我的问题是传递给 JToolBarHelper 方法的参数如何知道它是点之前的控制器名称?

【问题讨论】:

    标签: php joomla joomla2.5


    【解决方案1】:

    此控制器拆分由 Joomla 核心控制器文件处理。文件路径因版本而异。

    JControllerLegacy 将在libraries/joomla/controller/legacy.phplibraries/cms/controller/legacy.phplibraries/legacy/controller/legacy.php 中定义。在最新的 Joomla 版本中。

    使用旧版本/libraries/joomla/application/component/controller.php

    希望,这是有道理的!

    【讨论】:

    • 对不起,我已经知道了。但想知道如何将任务拆分为控制器名称和方法名称。您能指出执行此操作的文件吗?
    • 核心控制器路径根据不同的Joomla版本不同,最新版本使用libraries/legacy/controller/legacy.php方法getInstance()
    • 你有 joomla 2.5 吗?
    • 也检查这个路径 /libraries/joomla/application/component/controller.php 我不确定
    • 我不是在尝试更新,而是想了解它是如何工作的……解决了。