首页 > 解决方案 > TYPO3 9.5:用高级路由配置替换 RealURL 代码

问题描述

如何将此代码从 RealURL 获取到 TYPO3 9.5 '高级路由配置'?

使用“方面”类型“PersistedAliasMapper”,您只能映射到 UID。但我想映射到另一个领域!就我而言,在“ event_id ”字段上。

array(
                    'GETvar' => 'tx_extension_search[eventid]',
                    'lookUpTable' => array(
                        'table' => 'tx_extension_domain_model_event',
                        'id_field' => 'event_id',
                        'alias_field' => 'title_alias',
                        'useUniqueCache' => 0,
                        'useUniqueCache_conf' => array(
                            'strtolower' => 1,
                            'spaceCharacter' => '-'
                        )
                    ),
                ),

标签: typo3typo3-9.x

解决方案


我建议添加一个slug字段。有了这个,编辑器可以处理每条记录的 url 段。以下是所需的更改:

SQL:

CREATE TABLE tx_extension_domain_model_event (
  slug varchar(1024) DEFAULT '' NOT NULL
);

三氯乙酸tx_extension_domain_model_event

        'slug' => [
            'exclude' => true,
            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:pages.slug',
            'config' => [
                'type' => 'slug',
                'size' => 50,
                'generatorOptions' => [
                    'fields' => ['title'],
                    'replacements' => [
                        '/' => '-'
                    ],
                ],
                'fallbackCharacter' => '-',
                'default' => ''
            ]
        ],

中的配置config.yaml,例如showAction显示事件的详细信息:

routeEnhancers:
  YourPlugin:
    type: Extbase
    extension: ExtensionKey
    plugin: Search
    limitToPages: [Put your detailPagePid here]
    routes:
      - { routePath: '/event/{event}', _controller: 'Event::show', _arguments: {'event': 'event'}}
    defaultController: 'Event::show'
    aspects:
      event:
        type: PersistedAliasMapper
        tableName: 'tx_extension_domain_model_event'
        routeFieldName: 'slug'

推荐阅读