I have an extension with a list and show action. Currently this extension can appear on multiple pages:
/page-1/
/page-2/subpage/
I have co
You can't avoid adding all the stuff when using f:link.action
VH, instead you need to use f:link.page
and pass only required params, sample:
<f:link.page additionalParams="{article : article.uid}" class="more" title="{article.name}">show article</f:link.page>
it will generate url like
/current/page/?article=123
or
/current/page/we-added-realurl-support-for-article
next in your first action of plugin (probably list
) you just need to forward request to show
action if given param exists:
public function listAction() {
if (intval(\TYPO3\CMS\Core\Utility\GeneralUtility::_GET('article'))>0) $this->forward('show');
// Rest of code for list action...
}
and probably change signature of show
public function showAction() {
$article = $this->articleRepository->findByUid(intval(\TYPO3\CMS\Core\Utility\GeneralUtility::_GET('article')));
if ($article == null) {
$this->redirectToUri($this->uriBuilder->reset()->setTargetPageUid($GLOBALS['TSFE']->id)->build());
}
// Rest of code for show action...
}
If the URIbuilder
is used you can also use the configuration:
features.skipDefaultArguments = 1
for example;
# if enabled, default controller and/or action is skipped when creating URIs through the URI Builder
plugin.tx_extension.features.skipDefaultArguments = 1
I use this configuration in combination with the realurl bypass
'postVarSets' => array(
'_DEFAULT' => array(
'extbaseParameters' => array(
array(
'GETvar' => 'tx_extension_plugin[action]',
'noMatch' => 'bypass',
),
),
),
),