10. 02. 2020, 16:58

Hallo Zusammen,

ich hoffe jemand kann mir mit den Route Enhancern weiterhelfen, die ja seit Version 9
das bisherige RealURL ablösen.
Ich hätte eigentlich ganz gerne, dass meine alten URLs aus RealURL weiter so
funktionieren.
Mein Problem hierbei sind optionale GET-Parameter, die aber nicht zwingend Bestandteil
der URL sind. So gibt es beispielsweise den Parameter "range" der ein Formular absendet
um die aktuelle Ergebnisliste einzugrenzen, in der Default-Ansicht gibt es diesen Parameter
aber nicht in der URL. Die meisten wissen sicher wie RealURL so funktioniert hat ^^

Das hier war meine alte RealURL-Config bzw. der Teil auf den es ankommt:
[code]'postVarSets' => array (
'_DEFAULT' => array(
'id'=>array(
array(
'GETvar' => 'mydevices[param][ID]'
)
),
'action' => array(
array(
'GETvar' => 'mydevices[action]'
)
),
'module'=>array(
array(
'GETvar' => 'mydevices[param][module]'
)
),
'gauge'=>array(
array(
'GETvar' => 'mydevices[param][gauge]'
)
),
'range'=>array(
array(
'GETvar' => 'mydevices[param][range]'
)
)
)
)
[/code]
Und das war mein erster Versuch mit den Route Enhancern.
Mein Verständnis dabei: Die einzelnen Route Enhancer funktionieren
wie bisher die PostVarSets, also dem was nun die Slugs darstellen.
Leider war das nicht so von erfolgt gekrönt. Wenn nur der erste
Parameter ( deviceid bzw. SingleDevice ) vorhanden war, dann war
alles supi. Sobald jedoch der zweite Parameter zusätzlich vorkommt,
wird der erste Parameter nicht mehr übersetzt, nur noch der zweite.
[code]routeEnhancers:

SingleDevice:
type: Simple
routePath: '/id/{deviceid}'
_arguments:
deviceid: 'mydevices/param/ID'
requirements:
deviceid: '[a-zA-Z0-9].*'
aspects:
action:
type: StaticValueMapper
map:
overview: 'overview'

DeviceOverview:
type: Simple
routePath: '/action/{action}'
_arguments:
action: 'mydevices/action'
requirements:
action: '[a-zA-Z].*'
aspects:
action:
type: StaticValueMapper
map:
overview: 'overview'
[/code]

Ich habe dann versucht beide Parameter in einem Enhancer zusammen zufassen,
in der Hoffnung das ist in der Doku damit gemeint
( "However, custom enhancers can be built to overcome special use cases where e.g. two plugins with multiple parameters each could be configured.
Otherwise, the first variant matching the URL parameters is used for generation and resolving." )

Meine URL wird dann zwar zumindest in dieser Kombination übersetzt, jedoch bekomme ich dann
eine PageNotFound-Exception.
[code]routeEnhancers:

SingleDevice:
type: Simple
routePath: '/action/{action}/id/{deviceid}'
_arguments:
deviceid: 'mydevices/param/ID'
action: 'mydevices/action'
requirements:
deviceid: '[a-zA-Z0-9].*'
action: '[a-zA-Z].*'
aspects:
action:
type: StaticValueMapper
map:
stations: 'stations'
[/code]

Und eigentlich will ich ja nur, dass nach dem PagePath die GET-Parameter als "/identifier/value"-Paar
ergänzt werden, falls vorhanden.
Kann mir da vielleicht jemand weiterhelfen?

Vielen Dank und Liebe Grüße,
Chris

P.S.: Ich hoffe ich bin im Bereich "Installationsprobleme" richtig, da es ja strenggenommen updatebedingt ist, woanders schien es mir irgendwie auch falsch.

P.P.S.: Die Formatierungsoptionen werden irgendwie mit jedem meiner Besuche weniger bzw. die Optik unübersichtlicher, kann das sein?

God's in his heaven, all's right with the world