Wieso wird meine Template-Datei nicht geladen?

Hallo liebe Gemeinde, 

ich lese und probiere und frickel und probiere weiter und komme einfach nicht drauf…

Es geht um ein Frontend-Plugin.

Der Controller wird ganz normal aufgerufen, das weiß ich, weil ich mit einer die(‘hello wolrd’); ein entsprechendes Ergebnis erhalte, wenn ich den Controller vie URL aufrufe. 

Allerdings will mir einfach nicht gelingen, statt dieser Hello World Sache ein Template zu laden. Was machen ich bitte falsch?

Hier meine Callback:

public function onGetControllerPromotionFrontend(Enlight_Event_EventArgs $arguments) {
        $controller = $arguments->get(‘subject’);
        $view = $controller->View();
        $view->addTemplateDir(
        __DIR__ . ‘/Views’
        );
        return __DIR__ . ‘/…/Controllers/Frontend/MyController.php’;

}

Hier meine indexAction des Controllers:

public function indexAction() {
        
        $view->loadTemplate(‘frontend/plugins/index/index.tpl’);
    }

Ich hab das auch mit extendsTemplate() versucht und alles umbenannt und hin und her geschoben. 

Es klappt nicht.

Wenn ich wenigstens eine ordendliche Fehlermeldung bekommen würde, dann hätte ich ja vielleicht einen Anhaltspunkt…

Aber da steht immer nur dieses “Ups, ein Fehler…”. Eine Debug-Mail oder sonst irgendwelche Infos bekomme ich auch nicht. 

So helfe mir jemand. Bitte.

Danke.

 

Auf dieser Seite findest du ein paar nette Debug Optionen für Shopware. Für deinen Fall ist speziell dieser Ausschnitt wichtig:
 

'front' => array(
	'showException' => true,
	'throwExceptions' => true,
	'noErrorHandler' => false,
),

Damit wird dir dann eine richtige Fehlermeldung im Frontend ausgegeben.

Viele Grüße

Du nutzt einmal _DIR_ mit … und einmal ohne. Benutze einfach Path() aus der bootstrap und gehe von da aus.

Viele Grüße

Ja danke. Ich hatte mitterweile selber herausgefunden, dass es am „Auslagern“ der Event-Subscriber in eine eigene Datei lag. Hier sind dann (natürlich) die Bootstrap-Funktionen und - Variablen nicht mehr (ohne Weiteres) vorhanden.

Was mich dann aber doch wundert, ist, weswegen im Developers Guide so betont wird, wie vorteilhaft es ist, die Events in einen separaten Subscriber zu legen.

Naja, egal jetzt.

Jetzt läuft alles normal. (Halt ganz normal mit Event-Subscriber in der Bootstrap-Datei)

Es ist auch korrekt die subscriber auszulagern und die bootstrap zu entschlacken. Du kannst zB die bootstrap dem subscriber im constructor übergeben und alle relevanten Pfade ausgehend von this->bootstrap->Path() angeben.

viele Grüße 

1 Like

Ok, das klingt vielsversprechend. Ich würde nur gerne wissen, wie man die „bootstrap dem subscripber im constructor“ übergibt. Alles, was ich versucht habe, damit ich auf entsprechende Variablen und Funktionen zugreifen kann, hat nicht funktionieren wollen. 

Ich würde mich wirklich sehr über einen weiteren Hinweis (oder noch besser: Code-Beipspiel) freuen.

Danke und viele Grüße.

@Aquatuning GmbH schrieb:

Es ist auch korrekt die subscriber auszulagern und die bootstrap zu entschlacken. Du kannst zB die bootstrap dem subscriber im constructor übergeben und alle relevanten Pfade ausgehend von this->bootstrap->Path() angeben.

viele Grüße 

So zB https://github.com/aquatuning/atsd-custom-categories/blob/master/Subscriber/Controller.php

viele Grüße 

1 Like

Super. 

Danke!