Oxid Controller return View -> Class not Found

Hallo zusammen,
irgendwie habe ich ein Problem, und sehe den Fehler einfach nicht :frowning:

Ich habe ein eigenes Modul, mit einem eigenen Controller:

class ApplyServiceController extends FrontendController
{

    protected $_sThisTemplate = 'apply_formular.tpl';

    public function render(): ?string
    {
        parent::render();
        return $this->_sThisTemplate;
    }
}

Ich möchte einfach nur das, das das Template ausgegeben wird.
Bekomme aber in der oxlog folgenden Fehler:

[2021-10-14 21:12:37] OXID Logger.ERROR: ERROR_MESSAGE_SYSTEMCOMPONENT_CLASSNOTFOUND apply_formular.tpl

Egal was fĂŒr ein tpl ich angebe (auch Oxid Standard Templates, zum testen), ich bekomme immer den Fehler CLASSNOTFOUND.

Das Template habe ich in der metadata definiert:

'templates'   => [
        'apply_formular.tpl' => 'ApplyService/views/tpl/apply_formular.tpl',
    ],

Und wenn ich den Controller zum testen ein die(“test”) schreibe, wird mir das auch ausgegeben.

Hat jemand eine Idee was ich falsch mache?

Verwendet wird oxid 6.2

Wo schreibst den Dein “test” rein und wie rufst Deinen Controller auf.

MerkwĂŒrdig finde ich die Fehlermeldung

[2021-10-14 21:12:37] OXID Logger.ERROR: ERROR_MESSAGE_SYSTEMCOMPONENT_CLASSNOTFOUND apply_formular.tpl

Weil apply_formular.tpl Dein Template ist und keine Klasse
 Rufst Du mit /index.php?cl=apply_formular.tpl auf?

Wie sieht Deine Controller Anmeldung in Deiner metadata.php aus?

Das test habe ich gleich als erstes in den Controller geschrieben, um zu prĂŒfen, ob er ĂŒberhaupt den Controller findet und aufruft. Das hat ja auch geklappt. Der Controller ist wie folgt in der metadata angemeldet:

'controllers' => [
        'ApplyServiceController' => \ApplyService\Controller\ApplyServiceController::class
    ],

MerkwĂŒrdig finde ich die Fehlermeldung

Ja das verstehe ich auch nicht, wieso er versucht eine Klasse aufzurufen, obwohl ein Template ist.

Aus ApplyServiceController wĂŒrde ich erstmal alles in Kleinbuchstaben setzen applyservicecontroller. Ein Blick in die Dokumentation verdeutlicht dies:

* Take care you declare the keys always in lower case!

Quelle: controllers — OXID eShop developer documentation 6.2.0 documentation

Dann ist halt die Frage wie Deinen Controller im Frontend aufrust. Dies wÀre dann /index.php?cl=applyservicecontroller

Ich rufe den Controller wie folgt auf:

index.php?cl=ApplyServiceController&fnc=render

Das mit dem klein schreiben, teste ich mal. Danke fĂŒr den Hinweis.

Das &fnc=render kannst weglassen, weil dies unnötig. DafĂŒr sorgt der FrontendController bzw. die OXID Core Logik.

Im Grunde brauchst auch nur protected $_sThisTemplate = 'apply_formular.tpl'; und kannst render() Methode weglassen, wenn die nicht benötigst um Werte zu setzen etc.

Wenn ich &fnc=render beim Aufrufen des Controllers weg lasse, geht es

Kann ich mir nicht ganz erklÀren, aber es geht nun.

Vielen Dank fĂŒr eine UnterstĂŒtzung, und ein schönes Wochenende.

1 Like

weil es dann unnötig nochmals aufgerufen wird


Gerne, gleichfalls.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.