【问题标题】:How to access TYPO3 action via browser如何通过浏览器访问 TYPO3 操作
【发布时间】:2019-11-30 21:17:14
【问题描述】:

我正在使用 Extbase 构建一个 TYPO3 扩展,并希望存储通过 HTTP GET 获得的数据。 现在我很难使用浏览器访问动作控制器。

插件实现到页面102
扩展键是 xyzlist
插件名称是 xyzlistdb
控制器名称为 PlaylistController
动作是 getAction
域名是 sub.domain.de

在 PlaylistController.php 下只有 getAction
error_log("GetAction",0);
弄清楚,如果浏览器 url 转到 getAction。

这里是我使用的网址

http://sub.domain.de/index.php?id=102&tx_xyzlist_xyzlistdb[controller]=playlist&tx_xyzlist_xyzlisdb[action]=get

在浏览器中,我使用的是 '&' 而不仅仅是 '&'
但如果我只使用 '&',它也无法访问 Get 操作

但我在日志文件中没有收到任何消息!

我做错了什么?

【问题讨论】:

  • 如何从外部程序访问动作控制器以模拟HTTP GET的问题。同时我发现,我必须注意使用正确的符号。它是 case sensetiv。例如,我必须编写播放列表而不是播放列表。现在我可以访问控制器,但仍然无法访问正确的操作。它总是指向第一个动作,而不是定义的动作。
  • 请提及您的 TYPO3 版本

标签: php typo3 extbase


【解决方案1】:

在这里你有多种可能性......

首先,您可以禁用[FE][pageNotFoundOnCHashError](安装工具),这样您就不会在无效的 cHash 上得到 404。这是全球所有插件的站点。这不是安全的方式。

其次,您可以在您的打字稿中设置plugin.tx_xyzlist_xyzlistdb.features.requireCHashArgumentForActionArguments = 0 为您的插件禁用pageNotFoundOnCHashError

最后,您可以将您的变量添加到[FE][cHashExcludedParameters](安装工具),这样您的变量就不会包含在 cHash 计算中。

【讨论】:

  • @HGA 我建议使用 cHashExcludedParameters - 设置
  • 我都试过了,都没有成功。最后我放弃了使用 HTTP GET 并改用 POPST。
【解决方案2】:

要获得正确的链接,您必须使用错字链接。生成插件操作链接的最简单方法可能是在这样的模板中使用f:uri.action

<f:uri.action pageUid="102" extensionName="xyzlist" pluginName="xyzlistdb" action="get" />

https://docs.typo3.org/other/typo3/view-helper-reference/9.5/en-us/typo3/fluid/latest/Link/Action.html

【讨论】:

  • 问题是如何从外部程序访问动作。
  • 使用 TYPO3 方法创建一次 URL,然后它将像通常的 URL 一样工作。它将附加一个必不可少的 &cHash 参数。
  • 谢谢你的回答。通过这种方法,我可以访问我想要的操作。但是,如果我尝试发送我的参数,它将无法正常工作。我认为参数必须在 cHash 之前发送。我需要一个没有 cHash 的解决方案,因为 HTTP GET 将从另一个程序发送,我只能实现一个静态 cHash。你有解决我的问题的办法吗?
  • 我尝试在 setup.typoscript 中禁用“requireCHashArgumentForActionArguments = 0”并重新安装了扩展,但 Typo3 仍然想要一个我无法提供的 cHash。
  • 为什么不先在TYPO3系统内部创建一个链接,然后复制渲染的链接呢?如果您想删除 cHash,则在 TYPO3 9 时使用站点模块。这样您每次通话都会有一个唯一的 url。我想您有 UIDS,所以也将它们包含在 url 中
【解决方案3】:

将控制器名称的第一个字母大写。

http://sub.domain.de/index.php?id=102&tx_xyzlist_xyzlistdb[controller]=Playlist&tx_xyzlist_xyzlisdb[action]=get

也不要无故关闭 cHash。这个问题根本不是原因。

乔纳斯提到要生成指向您的操作的链接:

<f:uri.action pageUid="102" extensionName="xyzlist" pluginName="xyzlistdb" action="get" />

这确实是一种很好的节省时间的做法。

【讨论】:

    猜你喜欢
    • 2016-07-16
    • 2011-09-14
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2015-06-27
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多