我正在Typo3网站上工作,并且路由系统出现问题。
我有一个扩展名,该扩展名基于我通过ElasticSearch查询的数据。这些数据包含一个称为“永久链接”的字段,它对于此索引中的每个记录都是唯一的。我想在此字段中添加一条路线。
如果我做这样的事情:
Event:
type: Extbase
limitToPages: [155]
extension: ...
plugin: ...
routes:
-
routePath: '/{idEvenement}'
_controller: 'Event::show'
_arguments:
idEvenement: permalink
它确实有效,但是由于Typo无法将URL解析为唯一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操作会收到一个错误,指出参数为null。
请帮助!
好吧,我只是愚蠢。永久链接是ElasticSearch中字段的名称,但是我的操作控制器正在等待“ idEvent”参数。这就是为什么它为空...不便之处,敬请原谅。