Controller "my_custom_controller" cannot be resolved

Hallo zusammen.
OXID 7.1

Brauche neuen Tab im Admin/Artkel Verwalten, hier also:
image

Dazu im Modul menu.xml angelegt:

<?xml version="1.0" encoding="ISO-8859-1"?>
<OX>
    <OXMENU id="NAVIGATION_ESHOPADMIN">
        <MAINMENU id="mxmanageprod">
            <SUBMENU id="mxarticles" cl="article" list="article_list">
                <TAB id="TQG_ORDER_LIMITS_TAB" cl="my_custom_controller" />
            </SUBMENU>
        </MAINMENU>
    </OXMENU>
</OX>

Dann, controller in metadata angelegt:

> 'controllers' => [
>         'my_custom_cotroller' => MyCustomArticleMainController::class,
>     ],

Controller Klasse dann:

class MyCustomArticleMainController extends ArticleMain
{
    protected $_sThisTemplate = '@modul_id/admin/my_custom_controller';
    public function render(): string
    {
        return parent::render();
    }
}

dann views/twig/my_custom_controller.html.twig

Ergebnis:
Der neue Tab im Backend erscheint bei Artikelübersicht, ist auch auf controller verlinkt, aber wenn ich drauf klicke, kommt in logs:
Controller “my_custom_controller” cannot be resolved.

Kann mir jemand mit einem Tipp bitte helfen? Was fehlt?
Modul mehrmals deaktiviert/aktiviert

Hat der Controller einen Namespace? Ist der Namespace in der composer.php angegeben?

Wird die MyCustomArticleMainController Klasse in der metadata.php über eine use Statement eingebunden? Sonst müsste der Namespace inline angegeben werden.

dann views/twig/my_custom_controller.html.twig

Verwendest du OXID 7.1 mit dem Twig Template?

Hallo bYemma

  1. Habe gerade Namespace gegen inline ersetzt, keine Wirkung.
  2. Verwende twig, ja.

Habe gerade festgestellt, dass OXID in mein controller doch rein geht. Template wird auch gerendered, aber an falscher Stelle.

aktuell:

<?php

namespace MyVendor\B2B\Oxid\Module\MyModule\Controller\Admin;

use OxidEsales\Eshop\Application\Controller\Admin\ArticleMain;

class MyModuleArticleMainController extends ArticleMain
{
    protected $_sThisTemplate = '@module_id/admin/my_module_article';

    public function render()
    {
        $sRet = parent::render();

        return $this->getTemplateName();
    }
}

Ergibt folgendes:

Was ich will, dass rendering beim Klicken auf CUSTOM_TAB passiert.

Erweitere ich die falsche OXID Admin Controller Klasse?

Du überschreibst in dem Fall den ArticleMain Controller und in diesem Zuge auch das Template und die Render Methode vom Stamm-Reiter.
Versuch mal stattdessen von der allgemeinen Oberklasse zu erben:
\OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController