Преобразование из realurl в routeEnhancers в TYPO3 9 ... Адаптировать LookUpTables с помощью дополнительных ValueMaps или как определить «сегмент с нулевым значением»? - PullRequest
1 голос
/ 19 марта 2020

Я обновляю проект об учебных курсах, и мои URL-сегменты выглядят так:

/ категория / курс / местоположение. html

Запустил его со следующей конфигурацией:

routeEnhancers:
    PageTypeSuffix:
        type: PageType
        default: '.html'
        map:
            '.html': 0
    CoursePlugin:
        type: Extbase
        limitToPages:
        - 1
        - 15
        - 17
        - 18
    extension: Course
    plugin: Catlist
    namespace: course_catlist
    routes:
         - routePath: '/{category_title}/{course_title}/{location_title}'
         _controller: 'Category::list'
         _arguments: {category_title: 'category', course_title: 'course', location_title: 'location'}
    defaultController: 'Category::list'
    aspects:
        category_title:
            type: PersistedAliasMapper
            tableName: tx_course_domain_model_category
            routeFieldName: 'slug'
        course_title:
            type: PersistedAliasMapper
            tableName: tx_course_domain_model_course
            routeFieldName: 'slug'
        location_title:
            type: StaticValueMapper
            map:
            alle-standorte: 0
            hamburg: 1
            berlin: 2

Проблема теперь в том, что она работает только при наличии значений для всех трех установленных параметров! Но, например, может существовать такой сегмент, как

/ языковые курсы / все курсы / берлин. html

Параметр курса пуст, поэтому все «языковые курсы» в «берлине» отображаются в виде списка.

В realurl можно комбинировать lookUpTable со значением ValueMap!

array(
    'GETvar' => 'tx_course_catlist[course]',
    'valueMap' => array(
        'all-courses' => "",
    ),
    'lookUpTable' => array(
        'table' => 'tx_course_domain_model_course',
        'id_field' => 'uid',
        'alias_field' => 'title',
        'addWhereClause' => ' AND deleted=0 ',
        'useUniqueCache' => 1,
        'useUniqueCache_conf' => array(
            'strtolower' => 1,
            'spaceCharacter' => '-',
        ),
    ),
)

Как я могу адаптировать это в TYPO3 9? Есть опыт или идеи? Как я могу сопоставить пустое значение для сегмента PersistedAliasMapper?

1 Ответ

0 голосов
/ 03 апреля 2020

Нашел решение:

Создать запись с uid = 0 в базе данных. Вызовите поле path-сегмент-поле, например, как «все курсы».

Это имеет неприятный побочный эффект: запись появляется в бэкэнде TYPO3, и если вы хотите ее отредактировать, вы получите сообщение об ошибке, которое UID не должен быть 0. Так что просто сделайте это через PHPmyadmin ...

И вы должны убедиться, что значение, переданное в курс, не NULL, а "0" при построении URL.

...