几周来,我一直在努力理解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方法:
它返回CCD_ 1。我还保证了在构造函数中进行检查。但我找不到addNew()方法参数是如何分离的,即Joomla如何知道点前的名称是控制器名称,点后的名称是其方法名称。
我还检查了Joomla.submmitbutton('controllername.methodname');
的javascript代码,但找不到。
所以,我的问题是,传递到JToolBarHelper方法的参数如何知道它是点之前的控制器名称?
此控制器拆分由Joomla核心控制器文件处理。文件路径因版本而异。
JControllerLegacy将在libraries/joomla/controller/legacy.php
、libraries/cms/controller/legacy.php
或libraries/legacy/controller/legacy.php
中定义。在最新的Joomla版本中。
旧版本使用/libraries/joomla/application/component/controller.php
希望,这是有道理的!