Bug #89263

TCEMAIN.preview doesn't work for routed controller with empty arguments

Added by Robert Wolle about 2 years ago. Updated 7 months ago.

Status:
New
Priority:
Should have
Assignee:
-
Category:
Link Handling, Site Handling & Routing
Target version:
-
Start date:
2019-09-25
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
9
PHP Version:
7.2
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

It's said in the subject and it has nothing to do with the news extension.

Example:

Site configuration (yaml):

routeEnhancers:
  NewsPlugin:
    type: Extbase
    extension: News
    plugin: Pi1
    routes:
      - routePath: '/news/{news_title}'
        _controller: 'News::detail'
        _arguments:
          news_title: news
    aspects:
      news_title:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_news
        routeFieldName: path_segment

Page tsconfig:

TCEMAIN{
    preview {
        tx_news_domain_model_news {
            useCacheHash = 1
            previewPageId = 123
            useDefaultLanguageRecord = 0
            fieldToParameterMap {
                uid = tx_news_pi1[news_preview]
            }
            additionalGetParameters {
                tx_news_pi1.controller = News
                tx_news_pi1.action = detail
            }
        }
    }
}

When I will access the preview, it gives the following error:
(1/1) Symfony\Component\Routing\Exception\InvalidParameterException
Parameter "tx_news_pi1__news" for route "tx_news_pi1_0" must match "[^/]++" ("" given) to generate a corresponding URL.

Because of having no tx_news_pi1[news] variable, the url cannot be generated. It seems to be required always.

I tried to set the variable like this "{news_title?}" in the yaml configuration, wich is not respected (https://symfony.com/doc/current/routing.html#optional-parameters).
Also I found an option "strict_requirements", which will generate the url, when I set it in the core of the vendor (defined in vendor/symfony/routing/Route.php, set in vendor/symfony/routing/Router.php).

In the core of Typo3 the routing has no option, which I can set ("strict_requirements" option or the variable "{news_title?}" in yaml).

To set the news parameter like this "TCEMAIN.preview.tx_news_domain_model_news.additionalGetParameters.tx_news_pi1.news = " will produce an error too.


Related issues

Related to TYPO3 Core - Bug #87333: Slug fieldSeparator default value collides with symfony strict requirementsClosed2019-01-05

Actions
Related to TYPO3 Core - Bug #88291: Exception thrown if slash in route field of PersistedPatternMapper aspectClosed2019-05-07

Actions
Related to TYPO3 Core - Bug #90531: Requirements are not considered when an aspect is presentClosed2020-02-25

Actions
Related to TYPO3 Core - Bug #92409: Regression with Save and Preview ButtonAccepted2020-09-25

Actions
#1

Updated by Christian Eßl about 2 years ago

  • Category set to Link Handling, Site Handling & Routing
#2

Updated by Robert Wolle almost 2 years ago

The feature, which was introduced in TYPO3 CMS 7 LTS, is not available anymore in TYPO3 CMS 9 LTS, if you use the same action for showing the live ("news" argument) and preview ("news_preview" argument) content.

Currently I add the following call in vendor/symfony/routing/Generator/UrlGenerator.php on line 171 before "foreach":

$this->setStrictRequirements(null);

This avoids the exception.

#3

Updated by Christian Eßl over 1 year ago

  • Related to Bug #87333: Slug fieldSeparator default value collides with symfony strict requirements added
#4

Updated by Christian Eßl over 1 year ago

  • Related to Bug #88291: Exception thrown if slash in route field of PersistedPatternMapper aspect added
#5

Updated by Christian Eßl over 1 year ago

  • Related to Bug #90531: Requirements are not considered when an aspect is present added
#6

Updated by Michael Christian over 1 year ago

BE Preview is still not working with 9.5.14.
Here ist the documentation to preview: https://docs.typo3.org/m/typo3/reference-tsconfig/master/en-us/PageTsconfig/TceMain.html

The following parameter is working (example with news):

TCEMAIN.preview.tx_news_domain_model_news.previewPageId = 123

The following parameter is not working (example with news):

TCEMAIN.preview.tx_news_domain_model_news.fieldToParameterMap.uid = tx_news_pi1[news_preview]

Can someone please fix this!

#7

Updated by Patrick no-lastname-given over 1 year ago

I can confirm with 9.5.18 that additionalGetParameters is not working anymore, in my example with tt_news.

#8

Updated by Felix Jacobi about 1 year ago

  • Related to Bug #92409: Regression with Save and Preview Button added
#9

Updated by Jo Hasenau 11 months ago

While the slug generation itself is still broken, the preview is actually working as soon as you have the configuration on both, source and target page, which is due to #92409

#10

Updated by Patrick no-lastname-given 7 months ago

Jo Hasenau wrote in #note-9:

While the slug generation itself is still broken, the preview is actually working as soon as you have the configuration on both, source and target page, which is due to #92409

Thanks, that works!

Also available in: Atom PDF