3

我创建了自己的扩展。可以从网站的不同组件和部分访问此扩展程序。

我遇到的问题是可能有许多不同的 URL 链接到这个扩展。我有一个“取消”按钮,但我不知道如何让这个按钮链接到以前的 URL。

想知道 joomla 中是否有像 getPreviousURL 这样的内置功能?找不到任何东西。

编辑:我应该说我仍然希望能够运行我的 cancel() 方法。例如 index.php?option=com_mycomp&task=mycomp.cancel。然后,cancel() 方法将重定向到上一页。

4

2 回答 2

6

如果我理解你的问题是正确的,这肯定会帮助你。Joomla 不支持类似的东西,但 Javascript 支持。

JS

<script>
function goBack()
  {
  window.history.back()
  }
</script>

HTML

<input type="button" value="Cancel" onclick="goBack()" />

back() 方法加载历史列表中的前一个 URL。这与单击后退按钮或 history.go(-1) 相同。

根据需要更新了答案。

PHP

如果 JavaScript 不可行,您可以使用 HTTP_REFERER,对其进行清理,然后通过 PHP 将其回显。

<?php
  $url = htmlspecialchars($_SERVER['HTTP_REFERER']);
  $this->setRedirect($url);
?>

这将不起作用,如果

  • 在浏览器地址栏中输入站点 URL。
  • 通过浏览器维护的书签访问该站点。
  • 作为窗口/选项卡中的第一页访问该站点。
  • 安装了安全软件(防病毒/防火墙/等),从所有请求中剥离引荐来源。
  • 以编程方式(例如 curl)访问该站点,而无需设置引荐来源标头(搜索机器人!)。

如果您遇到任何问题,请告诉我。

更新答案 - Joomla 方法

$url = JFactory::getURI();
$request_url = $url->toString();
于 2012-10-18T06:15:21.933 回答
1

我已经这样做了:

  1. 安装 Joomla 扩展“jumi”@ url http://extensions.joomla.org/extensions/extension/core-enhancements/coding-a-scripts-integration/jumi

  2. 创建一个 html 文件(例如:back.html)并编写以下代码:

<script>
function goBack()
  {
  window.history.back()
  }
</script>
<input type="button" value="Back" onclick="goBack()" />

  1. 将其保存到 Joomla 根目录中。

  2. 在 Joomla 中创建一个自定义模块并编写语法:

{jumi [back.html]}

  1. 发布此模块

我希望它会奏效。谢谢

于 2015-04-27T17:08:17.793 回答