Hallo zusammen,
irgendwie habe ich ein Problem, und sehe den Fehler einfach nicht
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.
system
Closed
October 15, 2022, 9:38am
9
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.