Joomla JToolbarhelper按钮不起作用

时间:2017-01-12 22:03:37

标签: button joomla controller toolbar

我正在创建一个自定义组件,但我无法让我的工具栏工作。

view.html.php:

protected function addToolbar() {
    JToolBarHelper::title( JText::_('COM_CYCLIST_TITLE_CATEGORIES'), 'generic.png' );
    $bar = & JToolBar::getInstance('toolbar');
    $bar->appendButton( 'Link', 'new', 'JTOOLBAR_NEW', '/administrator/index.php?option=com_project&view=project&layout=edit');

    JToolbarHelper::addNew( 'project.add');
    JToolBarHelper::editList('project.edit');
    JToolBarHelper::deleteList('', 'projects.delete');

//        $bar->appendButton( 'Link', 'custom', 'Custom', '../index.php?option=com_mycomponent&format=raw' );

    }

Controller project.php:

<?php

// No direct access.
defined('_JEXEC') or die;

jimport('joomla.application.component.controlleradmin');

class ProjectControllerProject extends JControllerForm {

    public function __construct() {
        parent::__construct();
    }

}
?>

我提供的工具栏按钮的任务并不重要。当我按下te键时,它会打开组件网址,但会显示404.当我在新标签页中复制/粘贴网址时,将显示概述。

http://localhostproject/administrator/index.php?option=com_project&view=projects

我错过了什么?

管理员组件: https://bitbucket.org/LightPhoenix/com_project/src

2 个答案:

答案 0 :(得分:0)

尝试将addToolbar函数更改为此

protected function addToolbar() {
    JToolBarHelper::title( JText::_('COM_CYCLIST_TITLE_CATEGORIES'), 'generic.png' );
    $app = JFactory::getApplication();

    // Run in backend
    if ($app->isAdmin() === true)
    {
        $bar = JToolBar::getInstance('toolbar');
        $url = JRoute::_('index.php?option=com_project&view=project&layout=edit');
        $bar->appendButton( 'Link', 'new', 'JTOOLBAR_NEW', $url);
    }

    JToolbarHelper::addNew( 'project.add');
    JToolBarHelper::editList('project.edit');
    JToolBarHelper::deleteList('', 'projects.delete');

    //$bar->appendButton( 'Link', 'custom', 'Custom', '../index.php?option=com_mycomponent&format=raw' );

}

很可能你的网址不正确,所以你得到404错误。如果您使用JRoute,它将为您修复网址,如果您使用的是sef网址。 $ app-&gt; isAdmin()用于检查您是否处于管理员模式。

答案 1 :(得分:0)

似乎url与弹出窗口不正确。您应该为Urls使用joomla方法或从index.php开始。如果我正确的话,下面的代码将适合你 -

$bar->appendButton( 'Link', 'new', 'JTOOLBAR_NEW', Juri::base(true) . '/index.php?option=com_project&view=project&layout=edit');

OR

$bar->appendButton( 'Link', 'new', 'JTOOLBAR_NEW', 'index.php?option=com_project&view=project&layout=edit');