带有自定义ValueMapper的TYPO3 RouteEnhancer

时间:2019-08-25 19:47:14

标签: routing typo3 extbase typo3-9.x

我目前正在尝试实现自定义RouteEnhancer。

是我一个人,还是文档又很不完整?除了变更日志条目中的一段微不足道的段落外,我无法在TYPO3中找到有关自定义增强子的任何信息,在哪里可以找到关于这些信息的更多信息?我无法在API文档中找到它们。

在我的扩展程序中,域模型的相关部分是<div class="dropdown"> <button class="navbar-toggler" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <span class="navbar-toggler-icon"></span> <!-- Put in hamburger --> </button> <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> <a class="dropdown-item" href="#about">About Me</a> <a class="dropdown-item" href="#heritage">My Heritage</a> <a class="dropdown-item" href="#contact">Get In Touch</a> </div> </div> Termin
Veranstaltung中有一个n to 1关系类型。我的termin->veranstaltung接受Veranstaltung->showAction()作为参数。我从默认的PersistedAliasMapper开始,对于termin的{​​{1}} s来说还可以。不幸的是,实际标题在uid实体中。

我想出了这些简单的转换器,并设置了配置以使用它们。我有两个问题:

  • 生成的URL仍然具有cHash,
    Termin
    我该如何摆脱呢?
  • 解析器似乎根本不起作用。我调试了返回值,似乎没有问题。 Veranstaltung希望我以字符串形式返回实体veranstaltung/81?cHash=fba7f1194090a8400556257a4cfe6f3b,对吗?

TerminValueMapper.php:

resolve()

config:

uid

1 个答案:

答案 0 :(得分:1)

有关路由功能的文档-特别是扩展路由-可以在https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Routing/ExtendingRouting.html#writing-custom-enhancers

中找到

对于cHash的调试问题,请使用以下两个地方作为起点: \TYPO3\CMS\Core\Routing\PageRouter::buildPageArgumentsPackages/TYPO3.CMS/typo3/sysext/core/Classes/Routing/PageRouter.php:311

扩展路由时,请注意是否需要编写自定义路由增强器(如果需要控制完整路由的外观和解析方式)还是自定义方面(如果要控制单个路由参数的方式) (“变量”)进行映射和解析)。两者都具有子类型(增强器和装饰器,静态或动态映射器),您可以在文档中找到它们。