Обработка параметров, которые могут быть пустыми с помощью RealURL - PullRequest
1 голос
/ 05 апреля 2019

У меня есть сгенерированный путь с различными категориями и продуктами, созданными с собственным расширением.Может быть одна, две или три категории, а также продукт ниже второй или третьей категории.

Примеры URL-адресов, которые должны работать:

/mainCategory/
/mainCategory/secondCategory/
/mainCategory/secondCategory/product-title
/mainCategory/secondCategory/thirdCategory/
/mainCategory/secondCategory/thirdCategory/product-title

В настоящее время проблема заключается в том, что третья категория не требуетсячтобы показать продукт.
Моя конфигурация:

'fixedPostVars' =>
    [
        'produkt' =>
            [
                0 =>
                     [
                          'GETvar' => 'tx_vendor_plugin[mainCategory]',
                           'lookUpTable' =>
                               [
                                   'table' => 'sys_category',
                                   'id_field' => 'uid',
                                   'alias_field' => 'title',
                                   'languageGetVar' => 'L',
                                   'languageField' => 'sys_language_uid',
                                   'transOrigPointerField' => 'l10n_parent',
                                   'useUniqueCache' => 1,
                                   'useUniqueCache_conf' =>
                                       [
                                           'strtolower' => 1,
                                           'spaceCharacter' => '-',
                                       ],
                                    ],
                            ],
                        1 =>
                            [
                                'GETvar' => 'tx_vendor_plugin[subCategory]',
                                'lookUpTable' =>
                                    [
                                        'table' => 'sys_category',
                                        'id_field' => 'uid',
                                        'alias_field' => 'title',
                                        'languageGetVar' => 'L',
                                        'languageField' => 'sys_language_uid',
                                        'transOrigPointerField' => 'l10n_parent',
                                        'useUniqueCache' => 1,
                                        'useUniqueCache_conf' =>
                                            [
                                                'strtolower' => 1,
                                                'spaceCharacter' => '-',
                                            ],
                                    ],
                            ],
                        2 =>
                            [
                                'GETvar' => 'tx_vendor_plugin[thirdCategory]',
                                'lookUpTable' =>
                                    [
                                        'table' => 'sys_category',
                                        'id_field' => 'uid',
                                        'alias_field' => 'title',
                                        'languageGetVar' => 'L',
                                        'languageField' => 'sys_language_uid',
                                        'transOrigPointerField' => 'l10n_parent',
                                        'useUniqueCache' => 1,
                                        'useUniqueCache_conf' =>
                                            [
                                                'strtolower' => 1,
                                                'spaceCharacter' => '-',
                                            ],
                                    ],
                            ],
                        3 =>
                            [
                                'GETvar' => 'tx_vndor_plugin[product]',
                                'lookUpTable' =>
                                    [
                                        'table' => 'tx_vendor_domain_model_product',
                                        'id_field' => 'uid',
                                        'alias_field' => 'title',
                                        'languageGetVar' => 'L',
                                        'languageField' => 'sys_language_uid',
                                        'transOrigPointerField' => 'l10n_parent',
                                        'useUniqueCache' => 1,
                                        'useUniqueCache_conf' =>
                                            [
                                                'strtolower' => 1,
                                                'spaceCharacter' => '-',
                                            ],
                                    ],
                            ],
                    ],

Когда я добавляю noMatch => bypass в третью категорию, она не показывает никакой третьей категории.Доступ к каждой третьей категории невозможен.

Когда я использую его без noMatch => bypass, в URL-адресе для продуктов без третьей категории есть пустой параметр пути: /mainCategory/secondCategory//product-title

Кто мне может помочьс этим?

1 Ответ

2 голосов
/ 05 апреля 2019

Это было задано, и ответил Дмитрий в TYPO3 Slack некоторое время назад:

Другими словами: вы не можете иметь дополнительные параметры в начале или в серединеpostVar.

Таким образом, вердикт заключается в том, что это невозможно с RealURL.

Пример:

/mainCategory/secondCategory/product-title/
/mainCategory/secondCategory/thirdCategory/

Как RealURL может знать, что декодировать product-title и thirdCategory здесь?Это неоднозначно, поскольку это может быть товар или категория.Вот почему RealURL использует пустые сегменты пути для всего, что может быть необязательным в начале / середине.

...