我不知道为什么这不起作用,但我的自定义按钮操作(任务)在我的组件中没有任何作用。在我的view.html.php文件中,我有:
JToolBarHelper::custom('reports.export_csv', 'csv', '', 'CSV', false);
JToolBarHelper::custom('reports.export_mailchimp', 'mailchimp', '', 'Mailchimp', false);
然后,在我的ReportsControllerReports文件中,我有两个方法(不仅仅是2个,还有一些其他方法,但它们并不相关),export_csv()和export_mailchimp()。每当我点击按钮时,我都会收到一个JS错误,我认为这会阻止操作执行这些方法中的代码。关于"b是未定义的"。我找不到我的代码与其他Joomla(核心)组件中使用的代码有任何区别,所以如果有人能阐明这个问题,我将不胜感激(和往常一样,Joomla论坛完全没有用)。
@Cfyz解决方案有效。
我将此添加到查看文件:
<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::_()"。我用两个样本替换了内部链接,这样更容易理解。
您应该覆盖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
});
}
}
在我的组件中,一切都很好,工作正常