Typo3路由:自定义方面如何工作?

问题描述 投票:0回答:1

我正在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。

请帮助!

routing typo3 typo3-9.x
1个回答
0
投票

好吧,我只是愚蠢。永久链接是ElasticSearch中字段的名称,但是我的操作控制器正在等待“ idEvent”参数。这就是为什么它为空...不便之处,敬请原谅。

© www.soinside.com 2019 - 2024. All rights reserved.