gpt4 book ai didi

routes - TYPO3 路由 : how does Custom Aspect works?

转载 作者:行者123 更新时间:2023-12-04 04:16:43 31 4
gpt4 key购买 nike

我在 TYPO3 网站上工作,我遇到了路由系统问题。

我有一个扩展,它基于我通过 ElasticSearch 查询的数据。这些数据包含一个名为“永久链接”的字段,它对于该索引中的每条记录都是唯一的。我想要一个包含这个字段的路由。

如果我这样做:

Event:
type: Extbase
limitToPages: [155]
extension: ...
plugin: ...
routes:
-
routePath: '/{idEvenement}'
_controller: 'Event::show'
_arguments:
idEvenement: permalink

它确实有效,但由于 Typo 无法将 URL 解析为唯一,因此它在其中添加了 cHash,我不希望这样。我尝试禁用该字段的 cHash 生成,但如果我从一个事件转到另一个事件(URL 发生变化但内容不变,直到我清理前端缓存),我会遇到问题。

我尝试使用自定义方面映射器,但没有任何文档,而且我不知道它是如何工作的。我的路线应该变成这样(我猜):

Event:
type: Extbase
limitToPages: [155]
extension: ...
plugin: ...
routes:
-
routePath: '/{idEvenement}'
_controller: 'Event::show'
_arguments:
idEvenement: permalink
aspects:
idEvenement:
type: EventMapper

我的 EventMapper 目前是这样的:

<?php

namespace Vendor\Extension\Routing\Aspect;

use TYPO3\CMS\Core\Routing\Aspect\StaticMappableAspectInterface;
use TYPO3\CMS\Core\Site\SiteLanguageAwareTrait;

class EventMapper implements StaticMappableAspectInterface
{
use SiteLanguageAwareTrait;

/**
* {@inheritdoc}
*/
public function generate(string $value): ?string
{
return $value;
}

/**
* {@inheritdoc}
*/
public function resolve(string $value): ?string
{
return isset($value) ? (string)$value : null;
}
}

如果我让这个映射器处于这种状态,我会在 Show 操作中收到一个错误,指出参数为空。

最佳答案

好吧,我只是愚蠢。固定链接是 ElasticSearch 中字段的名称,但我的操作 Controller 正在等待“idEvent”参数。这就是它为空的原因...对于给您带来的不便,我们深表歉意。

所以澄清一下我的工作:我用我的自定义方面来愚弄 Typo。通常它的目的是通过向 Controller 发送正确的信息来检查记录是否是唯一的。就我而言,我知道每条记录都是唯一的(因为我的唯一 ID 是由 Elastic 生成的)。所以我唯一要做的就是发回 ID,以便 Controller 可以执行它的操作。

关于routes - TYPO3 路由 : how does Custom Aspect works?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60614998/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com