Я пытаюсь создать древовидные URL для некоторых категорий.URL-адреса должны выглядеть следующим образом: /category1/subcategory1/subcategory2
.Количество сегментов пути должно быть гибким, так как я не знаю, насколько глубокими будут категории.
Я получил первый сегмент пути, работающий со следующей конфигурацией и пользовательским Mapper:
ProductsPlugin:
type: Extbase
limitToPages:
- 5
extension: MyExt
plugin: Products
routes:
-
routePath: '/{category_title}'
_controller: 'Products::list'
_arguments:
category_title: id
defaultController: 'Products::list'
requirements:
category_title: '[0-9]{1..6}'
aspects:
category_title:
type: ProductsValueMapper
Mapper выглядит следующим образом:
<?php
namespace Vendor\MyExt\Routing\Aspect;
use TYPO3\CMS\Core\Routing\Aspect\PersistedMappableAspectInterface;
use TYPO3\CMS\Core\Site\SiteLanguageAwareTrait;
class ProductsValueMapper implements PersistedMappableAspectInterface
{
use SiteLanguageAwareTrait;
/**
* @param string $value
*
* @return string|null
*/
public function generate(string $value): ?string
{
/**
* returns one or more path segments
* e.g. category1 or category1/subcategory1
*/
return $slug;
}
/**
* @param string $value
*
* @return string|null
*/
public function resolve(string $value): ?string
{
/**
* returns the id of the category from the last path segment
*/
return $id;
}
}
Для одной категории он работает нормально.Но как только запрашивается подкатегория, код прерывается.Ссылка на подкатегорию содержит только сегмент пути подкатегории, например, /subcategory1
, но не один из категории.
Мне понятно, почему это так, поскольку я добавляю только идентификатор подкатегории.в LinkViewHelper: <f:link.action controller="Products" action="list" arguments="{id: 5}">Test Link</f:link.action>
.Но я могу
Какие винты мне нужно настроить, чтобы URL-адреса работали также для любой глубины подкатегорий?
Заранее спасибо!