Я работаю над сайтом Typo3, и у меня проблема с системой маршрутизации.
У меня есть расширение, основанное на данных, которые я запрашиваю через ElasticSearch. Эти данные содержат поле с именем «постоянная ссылка», оно уникально для каждой записи в этом индексе. Я хочу иметь маршрут с этим полем.
Если я сделаю что-то вроде этого:
Event:
type: Extbase
limitToPages: [155]
extension: ...
plugin: ...
routes:
-
routePath: '/{idEvenement}'
_controller: 'Event::show'
_arguments:
idEvenement: permalink
Это работает, но так как Typo не может разрешить URL как уникальный, он добавляет cHa sh и я этого не хочу. Я попытался отключить генерацию cHa sh для этого поля, но у меня возникают проблемы, если я go переходит от одного события к другому (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;
}
}
Если я позволю этому преобразователю в этом состоянии, я получу ошибку в моем шоу действие, говорящее, что параметр является нулем.
Пожалуйста, помогите!