OXID6: Backend Ajax Controller Aufruf unglücklich gelöst

Guten Tag,

ich bin immer noch etwas unglücklich über die Art und Weise der Umsetzung der namespace-Umstellung im Backend. Ich stolpere immer wieder über die “alten” Schreibweisen der Controlleraufrufe (lowercase mit Unterstrich), statt Camelcase.

Ich versuche in meinen neuen Modulen immer darauf zu verzichten und schreibe eigene Controller und Models immer in Camelcase. Das klappte bisher auch anstandslos.

Nun bin ich über einen eigenen Backend-Ajax-Popup-Controller gestolpert. Auch hier wollte ich meine PopUp-Templates usw auf Camelcase umstellen und habe mich gewundert, warum sich die beiden PopUp-Fenster nicht mit den Daten füllten. Laut Errorlog versuchte OXID den Controller so aufzurufen:
MeinController_ajax, statt MeinControllerAjax, so wie ich es gedacht und konfiguriert hatte.
Mein Controller heißt beispielhaft so “MeinControllerAjax” und die Dateibeszeichnung ist auch “MeinControllerAjax.php”

Die Ursache liegt in In [OXID6.1.1] \source\admin\oxajax.php Zeile 45. Hier wird versucht durch das anhängen von “_ajax” den passenden Controller zu ermitteln.

Jetzt habe ich mir einen Original-OXID6 Controller angeschaut z.B. ActionsArticleAjax.
Leider wird der Controller in der …
\vendor\oxid-esales\oxideshop-ce\source\Core\Routing\ShopControllerMapProvider.php
so geroutet:
‘actions_article_ajax’ => \OxidEsales\Eshop\Application\Controller\Admin\ActionsArticleAjax::class
statt hier in Camelcase zu schreiben. Es gibt doch extra diesen Mapper:
\vendor\oxid-esales\oxideshop-ce\source\Core\Autoload\BackwardsCompatibilityClassMap.php
der beide Schreibweisen ermöglichen würde …

Nun habe ich ein Zwischending für mich gefunden:

In meinen Templates verwende ich überall Camelcase und nur an einer Stelle, in meiner controller-Konfigration in der metadata.php schreibe ich jetzt:

‘MeinController_ajax’ => \MeinVendor\Application\Controller\Admin\MeinControllerAjax::class

Was denkt Ihr, wie soll ich damit umgehen? Ich würde es gern an OXID melden, aber es ist kein Bug und kein Featurewunsch, sondern eher ein Software-Design-Problem.

1 Like

Kannst es ruhig in den bug tracker als eingeben, ich habe dort schon mehrere solche Sachen gesehen und auch selbst eingetragen.
Definition von Bug ist, wenn die Software sich anders verhält als erwartet. Und man erwartet ja die allgemeinen übliche namespace Schreibweise.

@vanilla_thunder:
erledigt: BugReport

2 Likes

@Mario_Lorenz: Das hat mich neulich auch einen halben Tag gekostet. Ich habe es allerdings bei der alten Schreibweise belassen.