Mittels Plugin einer Variable einen Wert zuweisen, der im Template ausgelesen werden kann

Hallo,

ich schaffe es nicht, in einem Template einer Variablen einen Wert zuzuweisen, der dann im Template zur Verfügung steht:

    public static function getSubscribedEvents()
    {
	return [
	    'Enlight_Controller_Action_Frontend_Checkout_Confirm' => 'createFile',
            'Enlight_Controller_Action_Frontend_Checkout_Confirm' => 'loadTemplate',
            'Enlight_Controller_Action_Frontend_Checkout_Cart' => 'loadTemplate',
            'Enlight_Controller_Action_Frontend_Checkout_AjaxCart' => 'loadTemplate',
	];
    }

    public function loadTemplate(\Enlight_Event_EventArgs $args)
    {
        $this->container->get('Template')->addTemplateDir($this->getPath() . '/Resources/views/');
    }

   public function createFile(\Enlight_Event_EventArgs $args){
      $subject = $args->getSubject();
      $view = $subject->View();
      $this->loadTemplate();
      $dateiname = date("Ymd-His"); //Dateiname erzeugen
      $view->assign('Dateiname',$dateiname);

    }

Die Zuweisung des Templates ist erfolgreich, weil ich in diesem {debug} eingebaut habe und das Debugfenster auch erscheint. Aber es enthält keine Variable namens Dateiname.

Wo ist mein Fehler?

Gesunde Grüße und Danke

Oliver

Das Plugin scheint mir ein wenig unvollständig. Und die Beschreibung wo der Fehler auftaucht ist auch etwas dürftig. Und damit soll man den Fehler finden? Also etwas mehr Infos bitte Wink

Rednaxela: ich versteh Deinen Einwand nicht. Das fertige Plugin soll natürlich mehr machen, aber der gezeigte Code sollte doch ausreichen, um eine Variable zu setzen. Und es gibt keine Fehlermeldung. Alles läuft problemlos. Auch der restliche Code des Plugins. Nur die Variable wird NICHT gesetzt und ist im Template nicht vorhanden. Im Debugfenster wird sie nicht angezeigt.

Was fehlt da an Info - die Events vielleicht? Und das fragliche Template ist das confirm.tpl. Ansonsten steh ich auf dem Schlauch.

Wird denn createFile überhaupt aufgerufen?

Edit: Ich hab den oberen Teil (getsubscribedEents) gar nicht gesehen :slight_smile:

Du registrierst Dich 2x auf

Enlight_Controller_Action_Frontend_Checkout_Confirm

das zweite dürfte den ersten überschreiben. Ich würde eh nur auf Checkout gehen (ohne _Confirm) und dann die action im subscriber abfrage. Eh ein bischen viele events für eine Aktion, insbesondere das Templateladen. Müßte ich mir morgen mal am PC angucken, Handy ist eher suboptimal

1 „Gefällt mir“

Hallo sonic,

genau das war’s. Herzlichen Dank.

@Rednaxela‍ das hattest Du nicht übersehen. Ich hab’s aufgrund Deiner Antwort ergänzt Blush. Auch Dir Danke.

Bleibt gesund

Oliver