2017-11-09 6 views
0

Bei der Bestätigung der Benutzerregistrierung möchte ich ein einfaches Popup anzeigen. Im Moment, um zu vereinfachen, freue ich mich, eine "Hello World" zu zeigen.Prestashop Modulentwicklung - Warum funktioniert diese Vorlage nicht?

Dies ist die Template-Datei, Ansichten/templates/Haken/registrationConfirm.tpl

<div id="idname" class="block"> 
    <h1 class="title_block">HelloWorld</h1> 
</div> 

In meinem benutzerdefinierten Modul habe ich diesen Haken (was ich weiß, tut Debug ausgelöst wird):

public function hookActionCustomerAccountAdd($params) { 
    return $this->display(__FILE__, 'registrationConfirm.tpl'); 
} 

Es zeigt nichts (ich habe auch versucht, den Quellcode der gerenderten Seite prüfen, aber ich dind't die „Hello World“ finden)

Antwort

3

Ho oks beginnend mit "Action" reagieren auf eine Aktion aber zeigen nichts an, aber die mit "Display" beginnenden tun.

Sie sollten auch an den Haken displayCustomerAccount reagieren

public function hookActionCustomerAccountAdd() { 
    $this->is_new_account = true; 
} 

public function hookDisplayCustomerAccount() 
{ 
    if ($this->is_new_account) { 
     return $this->display(__FILE__, 'registrationConfirm.tpl'); 
    } 
} 
+0

Was enthält '$ this'? Und wie kann ich sicher sein, dass im realen Fall, wenn die Website von Tausenden von Menschen besucht wird, die Werte "is_new_account" nicht gemischt sind? – frabis

+0

in einem Modul-Kontext, '$ this 'ist das aktuelle Modul http://php.net/manual/en/language.oop5.basic.php ' $ this-> is_new_account' ist nur für die aktuelle Ausführung gesetzt, wenn Derselbe (oder ein anderer) Besucher führt das gleiche Skript im selben Moment (oder in einem anderen Moment), er wird ein anderes '$ this-> is_new_account' haben. – shagshag

+0

Danke für die Erklärung. Ich bin verrückt, warum es nicht funktioniert. Wird dies in PS 1.6 unterstützt? – frabis

1

habe ich versucht, die Lösung von @shagshag geschrieben, aber aus irgendeinem Grund ist es nicht für mich arbeiten. Also teile ich meine Lösung (es ist nicht schön, noch effizient, denke ich, aber es scheint für mich zu funktionieren): in der hookActionCustomerAccountAdd Ich speichere eine benutzerdefinierte Tabelle (newCustomersTmp) E-Mail und Kunden-ID, weil dies die Daten sind, die ich brauche nach, im Display Hook. Dann in der hookDisplayCustomerAccount Ich überprüfe, ob ein Benutzer mit der aktuellen E-Mail ($ this-> Kontext-> Kunde-> E-Mail) bereits in meiner Tabelle vorhanden ist: Wenn ja, ich die Daten abrufen, die Aktionen, die ich brauche mit ihnen und löschen die Reihe in der Tabelle.