在自定义组件的Joomla前端中使用JToolbar或JToolbarHelper进行CRUD

时间:2014-08-21 09:31:39

标签: php joomla joomla3.3

这些类适合哪些情况?我一直在尝试使用它们,但它们都不起作用。 生成组件框架,管理员方面有CRUD操作。我尝试从这个生成的代码中使用JToolbarHelper,就像在mycomponent / view.html.php中一样:

// Overwriting JView display method
function display($tpl = null)
{
    // Include helper submenu
    InvoiceHelper::addSubmenu('invoice');

    // Assign data to the view
    $this->items = $this->get('Items');
    $this->pagination = $this->get('Pagination');

    // Check for errors.
    if (count($errors = $this->get('Errors'))){
        JError::raiseError(500, implode('<br />', $errors));
        return false;
    };

    // Set the toolbar
    $this->addToolBar();
    // Show sidebar
    $this->sidebar = JHtmlSidebar::render();

    // Display the view
    parent::display($tpl);
}

protected function addToolBar()
{
    JLoader::register('JToolbarHelper', JPATH_ADMINISTRATOR.'/includes/toolbar.php');

    $canDo = InvoiceHelper::getActions();
    JToolBarHelper::title(JText::_('Invoice Manager'), 'invoice');
    if($canDo->get('core.create')){
        JToolBarHelper::addNew('invoic.add', 'JTOOLBAR_NEW');
    };
    if($canDo->get('core.edit')){
        JToolBarHelper::editList('invoic.edit', 'JTOOLBAR_EDIT');
    };
    if($canDo->get('core.delete')){
        JToolBarHelper::deleteList('', 'invoice.delete', 'JTOOLBAR_DELETE');
    };
 }

但它甚至没有出现在页面上。

然后我遇到了这个教程http://docs.joomla.org/J3.x:Using_the_JToolBar_class_in_the_frontend并且它很有用,除了我无法想象实现类似于具有复选框和每个操作的实体列表之类的东西。并且我不清楚如何使用这种方法处理表单提交,似乎它通过JS发生,我做对了吗?

那么,请告诉我,有什么区别,为什么第一种方法甚至不会使工具栏出现?

1 个答案:

答案 0 :(得分:1)

我知道这是很久以前的事了,但我希望获得相同的结果并找到以下内容来加载页面上的工具栏。使用上面的代码:

protected function addToolBar()
{
    JLoader::register('JToolbarHelper', JPATH_ADMINISTRATOR.'/includes/toolbar.php');

    $canDo = InvoiceHelper::getActions();
    JToolBarHelper::title(JText::_('Invoice Manager'), 'invoice');
    if($canDo->get('core.create')){
        JToolBarHelper::addNew('invoic.add', 'JTOOLBAR_NEW');
    }
    if($canDo->get('core.edit')){
        JToolBarHelper::editList('invoic.edit', 'JTOOLBAR_EDIT');
    }
    if($canDo->get('core.delete')){
        JToolBarHelper::deleteList('', 'invoice.delete', 'JTOOLBAR_DELETE');
    }
    $this->toolbar = JToolbar::getInstance(); // <<<---------- ADD THIS TO METHOD!
 }

然后在你看来这样做:

<?php echo $this->toolbar->render(); ?>

希望这会有所帮助!!!享受。