0
我试图在我的组件工具栏上实现“保存,关闭和打印”按钮,该按钮将像往常一样保存并关闭编辑窗体,但也会打开在新选项卡中打印表单的版本。这可能吗?Joomla - 是否有可能在控制器的新选项卡中打开链接
目前我在列表视图上有一个打印按钮,但我想简化用户体验并使其更加方便。
我试图在我的组件工具栏上实现“保存,关闭和打印”按钮,该按钮将像往常一样保存并关闭编辑窗体,但也会打开在新选项卡中打印表单的版本。这可能吗?Joomla - 是否有可能在控制器的新选项卡中打开链接
目前我在列表视图上有一个打印按钮,但我想简化用户体验并使其更加方便。
你可以做到这一点的形式在edit.php视图文件
<script type="text/javascript">
Joomla.submitbutton = function(task)
{
if (task == 'object.saveprint' || document.formvalidator.isValid(document.id('attendee-form'))) {
window.open(your_print_url,'_blank');
Joomla.submitform(task, document.getElementById('attendee-form'));
}
else {
alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED'));?>');
}
}
</script>
我能想到之后做的唯一解决方案提交前保存在控制器设置东西的会议用户。在列表视图中,您可以读取会话中的值并添加一个打开视图的JavaScript代码。
在控制器做:
public function save() {
$return = parent::save();
JFactory:getSession()->set('printUrl', JRoute::_('your print url'));
return $return;
}
在如default.php(更好地得到在view.html.php网址VAR)做
$url = JFactory::getSession()->get('printUrl', null);
if ($url !== null) {
JFactory::getDocument()->addScriptDeclaration("window.open(".$url.",'_blank')");
JFactory::getSession()->set('printUrl', null);
}
希望有所帮助。
不应该是' - > addScriptDeclaration()'而不是' - > addScript()'? – Lodder
@Lodder是真的,我在没有测试的情况下将它读出来。更正了它:-) – Laoneo
很好的解决方案谢谢!我实际上已经下了JavaScript路线,但我喜欢会话方法。我以前没有真正遇到过。任何评论(如果有的话)是更好的方法? – doovers