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.