Наконец, я нашел 2 решения:
TypoScript:
plugin.tx_yourext_plugin.features.requireCHashArgumentForActionArguments = 0
и
Контроллер: (Простой доступ через параметр методов или через $ this->запрос)
public function listAction (int $ argument = 0) {...
ИЛИ
ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'tx_yourext_plugin[argument]';
и
Контроллер:
public function listAction() {
$argument = $this->request->getArgument('argument');
FLUID / HTML:
Решение 1: Собственная обычная форма HTML (без FLUID / ViewHelper):
<form action = '<f:uri.action action = "cunning" controller = "job"/>' method = "GET">
<select name = "tx_yourext_plugin [argument]">...
Решение 2: Собственный ViewHelper со следующим содержимым -тогда он может быть использован в качестве оригиналов (он предотвращает только автоматически сгенерированную продукцию __ Скрытые поля реферера, а также скрытые поля для доверенных свойств):
class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper {
protected function renderHiddenReferrerFields () {
return ";
}
protected function renderTrustedPropertiesField () {
return ";
}
}
Большое спасибо https://www.ophidia.net/fluid-fform-referrer-deaktivieren/
Для обоих решений: paginate FLUID: (Примечание: начиная с TYPO3 10 - addQueryStringMethod: с ограничением 'POST')
<f:widget.paginate... configuration = "{... addQueryString: 'true', addQueryStringMethod: 'GET'}">
НО у меня осталась одна проблема - я не получаю красивые URL-адреса для формы фильтра. Поэтому, если я отправляю форму, URL-адрес не подходит, но если я использую после этого нумерацию страниц, то URL-адрес будет красивым и чистым.
Кто-то идея?
MyPlugin:
type: Extbase
extension: MyExtKeyNameSpace
plugin: PluginName
defaultController: 'Controller::list'
routes:
# - { routePath: '/{page-label}-{page}', _controller: 'Controller::list', _arguments: {'page': '@widget_0/currentPage'} }
# - { routePath: '/{type-label}-{type}', _controller: 'Controller::list', _arguments: {'type': 'pluginTypes'} }
# - { routePath: '/{area-label}-{area}', _controller: 'Controller::list', _arguments: {'area': 'pluginAreas'} }
# - { routePath: '/type-{type}/area-{area}', _controller: 'Controller::list', _arguments: {'type': 'pluginTypes', 'area': 'pluginAreas'} }
- { routePath: '/{page-label}{page}/{type-label}{type}/{area-label}{area}', _controller: 'Controller::list', _arguments: {'page': '@widget_0/currentPage', 'type': 'pluginTypes', 'area': 'pluginAreas'} }
- { routePath: '/{company_slug}/{plugin_slug}', _controller: 'Controller::show', _arguments: {'company_slug': 'company', 'plugin_slug': 'plugin'} }
defaults:
page: ''
type: ''
area: ''
requirements:
page: '\d+'
type: '\d+'
area: '\d+'
aspects:
page: { type: StaticRangeMapper, start: '1', end: '100' }
page-label: { type: LocaleModifier, default: 'page-', localeMap: [{ locale: 'en_.*', value: 'page-' }, { locale: 'de_.*', value: 'seite-' }] }
company_slug: { type: 'PersistedAliasMapper', tableName: 'tt_address', routeFieldName: 'slug' }
plugin_slug: { type: 'PersistedAliasMapper', tableName: 'tx_myextkey_domain_model_plugin', routeFieldName: 'slug' }
type-label: { type: LocaleModifier, default: 'type-', localeMap: [] }
area-label: { type: LocaleModifier, default: 'area-', localeMap: [] }