Joomla自定义管理按钮操作

时间:2012-02-13 23:33:11

标签: joomla helpers jtoolbar

我不知道为什么这不起作用,但我的自定义按钮操作(任务)都没有在我的组件中执行任何操作。在我的view.html.php文件中,我有:

JToolBarHelper::custom('reports.export_csv', 'csv', '', 'CSV', false);
JToolBarHelper::custom('reports.export_mailchimp', 'mailchimp', '', 'Mailchimp', false);

然后在我的ReportsControllerReports文件中,我有2个方法(不仅仅是2个,还有一些其他但它们不相关),export_csv()和export_mailchimp()。每当我点击按钮时,我都会收到一个JS错误,我认为这个错误阻止了操作在这些方法中执行代码。关于“b未定义”的事情。我发现我的代码和其他Joomla(核心)组件中使用的代码之间没有任何区别,所以如果有人能够对这个问题有所了解,那将非常感激(像往常一样,Joomla论坛完全没用)。

2 个答案:

答案 0 :(得分:6)

@Cfyzz解决方案有效。

我将此添加到查看文件中:

<script type="text/javascript">

    Joomla.submitbutton = function(pressbutton) {
        switch(pressbutton) {
            case 'google':

                window.location = '<?=JRoute::_( 'http://google.com', false );?>';

            break;
            case 'stackoverflow':

                window.location = '<?=JRoute::_( 'http://stackoverflow.com', false );?>';

            break;
        }

    }
</script>

,这在view.html.php

JToolBarHelper::cancel('stackoverflow', 'Go Overflow');
JToolBarHelper::custom('google', 'checkin', '', 'Go Google', false);

显然你不必在这种情况下使用“JRoute :: _(”。我用2个样本替换了内部链接,因此更容易理解。

答案 1 :(得分:0)

您应该覆盖Joomla的JS框架行为 您应该在自定义JS文件中使用该函数:
Joomla.submitbutton = function(pressbutton) {
switch(pressbutton) {
case 'export_cvs':
URL = JURI::base.'index.php?option=yourController&task=export_cvs&....
$.ajax({
url: URL, type: post, etc });
}
}

在我的组件中,一切正常并且正常工作