[BUGFIX] Allow custom namespace in ExtbasePluginEnhancer 52/58952/3
authorBenni Mack <benni@typo3.org>
Mon, 26 Nov 2018 14:46:27 +0000 (15:46 +0100)
committerGeorg Ringer <georg.ringer@gmail.com>
Wed, 12 Dec 2018 18:38:04 +0000 (19:38 +0100)
In Extbase, it is possible to configure a custom namespace for
plugin arguments:

plugin.tx_bennimack.view.pluginNamespace = bmack

This is now also respected in the Extbase Plugin Enhancer by omitting
"extension" and "plugin" properties and just using the "namespace"
property.

Resolves: #87005
Releases: master
Change-Id: I19c6338ec0d103837a5c5217ad7ba6643b6b6c54
Reviewed-on: https://review.typo3.org/58952
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Jonas Eberle <flightvision@googlemail.com>
Tested-by: Jonas Eberle <flightvision@googlemail.com>
Reviewed-by: Aimeos <aimeos@aimeos.org>
Tested-by: Aimeos <aimeos@aimeos.org>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
typo3/sysext/core/Documentation/Changelog/9.5/Feature-86365-RoutingEnhancersAndAspects.rst
typo3/sysext/extbase/Classes/Routing/ExtbasePluginEnhancer.php

index e18caa1..1f1b82c 100644 (file)
@@ -195,6 +195,9 @@ And generate the following URLs
 In this example, you also see that the `_arguments` parameter can be used to bring them into sub properties of an array,
 which is typically the case within demand objects for filtering functionality.
 
+For the Extbase Plugin Enhancer, it is also possible to configure the namespace directly by skipping `extension`
+and `plugin` properties and just using the `namespace` property as in the regular Plugin Enhancer.
+
 Aspects
 ^^^^^^^
 
index 83b5cc5..c24ed9e 100644 (file)
@@ -47,12 +47,16 @@ class ExtbasePluginEnhancer extends PluginEnhancer
     public function __construct(array $configuration)
     {
         parent::__construct($configuration);
-        $extensionName = $this->configuration['extension'];
-        $pluginName = $this->configuration['plugin'];
-        $extensionName = str_replace(' ', '', ucwords(str_replace('_', ' ', $extensionName)));
-        $pluginSignature = strtolower($extensionName . '_' . $pluginName);
-        $this->namespace = 'tx_' . $pluginSignature;
         $this->routesOfPlugin = $this->configuration['routes'] ?? [];
+        // Only set the namespace if the plugin+extension keys are given. This allows to also use "namespace" property
+        // instead from the parent constructor.
+        if (isset($this->configuration['extension']) && isset($this->configuration['plugin'])) {
+            $extensionName = $this->configuration['extension'];
+            $pluginName = $this->configuration['plugin'];
+            $extensionName = str_replace(' ', '', ucwords(str_replace('_', ' ', $extensionName)));
+            $pluginSignature = strtolower($extensionName . '_' . $pluginName);
+            $this->namespace = 'tx_' . $pluginSignature;
+        }
         return;
     }