Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten Ansicht
  #1  
Alt 16.05.08, 12:06
Forum Newbie
 
Registriert seit: 05.05.08
Alter: 24
Beiträge: 19
Hook #8: wie $sessiondata ändern?

Hi,

nachdem ich bisher den Vorstellungsthread missbraucht habe, wollte ich den nun mal verschonen.

Ich nutze Hook #8, das funktioniert auch grundsätzlich. Nun möchte ich aber die Form Eingaben verändern, aber ich raff nicht wie - zumal #8 (PM_SubmitEmailHook) keinen Rückgabewert hat.

Meine Funktion sieht so aus:

PHP-Code:
function PM_SubmitEmailHook($subpart$maildata$sessiondata = array(), $markerArray = array(), $obj) { 
, und print_r($sessiondata) funktioniert auch, aber Änderungen bleiben erwartungsgemäß ja lokal in der Funkion.

Wo liegt mein Denkfehler?

Danke!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
Sponsored Links
  #2  
Alt 17.05.08, 17:13
Benutzerbild von einpraegsam.net
Forum Stammgast
 
Registriert seit: 11.05.07
Ort: Nürnberg
Alter: 29
Beiträge: 252

Du kannst über eine PHP Funktion auch Variablen verändern, ohne das die Funktion etwas zurückgeben muss - Beispiel:

PHP-Code:
$bla 'text';

function 
x($string) {
$string 'hallo';
}

function 
y(&$string) {
$string 'hallo';
}

echo 
x($bla); // text
echo y($bla); // hallo 
__________________
einpraegsam.net alias wunschtacho

Powermail :: Einprägsam :: Xing Profil :: Wunschtacho :: JustPowder :: conject
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #3  
Alt 18.05.08, 16:39
Forum Newbie
 
Registriert seit: 05.05.08
Alter: 24
Beiträge: 19

Hmm, stimmt! Danke dafür, leider bekomm ich es immer noch nicht auf die Reihe. Sieht so aus bei mir:

PHP-Code:
  function PM_SubmitEmailHook($subpart$maildata, &$sessiondata$markerArray = array(), $obj) {
    
$sessiondata['uid11'] = "test";
    echo 
"<pre>";
    
print_r($sessiondata);
    echo 
"</pre>";
  } 
uid11 wird in der Funktion korrekt überschrieben, wie ich anhand vom print_r stehe. Aber in der Mail die dann ankommt, steht weiterhin der ursprüngliche Wert drin. Mache ich noch was falsch?

Danke!

Geändert von flowtec (18.05.08 um 16:48 Uhr).
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #4  
Alt 18.05.08, 17:00
Benutzerbild von einpraegsam.net
Forum Stammgast
 
Registriert seit: 11.05.07
Ort: Nürnberg
Alter: 29
Beiträge: 252

Also hab mir das mal angesehen in der class.tx_powermail_submit.php

In den Zeilen 115 bis 120 wird der E-Mail Inhalt zusammengebastelt - erst danach in der Zeile 138 wird die Funktion für den Hook, den du dir herausgesucht hast, aufgerufen. Da ist es einfach zu spät $this->sessiondata zu ändern.

Wenn du nur $this->sessiondata ändern willst, würde ich dir diesen Hook empfehlen:
PHP-Code:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['powermail']['PM_SubmitBeforeMarkerHook'
__________________
einpraegsam.net alias wunschtacho

Powermail :: Einprägsam :: Xing Profil :: Wunschtacho :: JustPowder :: conject
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #5  
Alt 18.05.08, 17:59
Forum Newbie
 
Registriert seit: 05.05.08
Alter: 24
Beiträge: 19

Danke für die fixe Antwort. Also $sessiondata wird nun verändert, wie ich auch testweise über ein

PHP-Code:
        $hookreturn $_procObj->PM_SubmitBeforeMarkerHook($this$this->markerArray$this->sessiondata); // Get new marker Array from other extensions - if TRUE, don't send mails (maybe spam)
        
echo $this->sessiondata['uid11']; 
in der class.tx_powermail_submit.php sehe. Allerdings stehen in der Mail immer noch die alten Werte. Ich vermute mal, dass $sessiondata schon davor in ein anderes Array o.ä. überführt wurde und meine Änderung damit immer noch zu spät kommt?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #6  
Alt 18.05.08, 18:10
Benutzerbild von einpraegsam.net
Forum Stammgast
 
Registriert seit: 11.05.07
Ort: Nürnberg
Alter: 29
Beiträge: 252

So könnte deine neue Extension aussehen:

PHP-Code:
function PM_SubmitBeforeMarkerHook($obj, &$markerArray$sessiondata) {
$markerArray['###UID11###'] = 'neuer Inhalt';

Oder was willst du eigentlich genau machen?
__________________
einpraegsam.net alias wunschtacho

Powermail :: Einprägsam :: Xing Profil :: Wunschtacho :: JustPowder :: conject
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #7  
Alt 18.05.08, 18:24
Forum Newbie
 
Registriert seit: 05.05.08
Alter: 24
Beiträge: 19

Ich habe ein Feature, womit ich anhand der Eingaben ein Textfile füllen und anhängen will.

Das ganze teste ich derzeit erstmal mit dem einfachen Verändern des Feldes "Vorname". Ich möchte also, dass der Benutzer zwar auf der Bestätigungsseite seine Eingaben sieht, aber in der E-Mail dann "Vorname" einen anderen Wert hat.

Da muss ich doch $sessiondata und nicht $markerArray verändern?

Nochmals vielen Dank!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #8  
Alt 18.05.08, 18:50
Benutzerbild von einpraegsam.net
Forum Stammgast
 
Registriert seit: 11.05.07
Ort: Nürnberg
Alter: 29
Beiträge: 252

Wenn du die Werte in der Session ändern willst, rate ich dir deinen eigenen Eintrag in der Session zu machen:

Werte aus Session in ein Array einlesen
Deine Werte hinzufügen zum Array
Und Array neu speichern

Hierzu würde ich (schon wieder) einen anderen Hook nutzen
PHP-Code:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['powermail']['PM_MainContentHookBefore'
Grüße, Alex

PS: Aller Anfang ist schwer, vor allem in einer fremden Extension
__________________
einpraegsam.net alias wunschtacho

Powermail :: Einprägsam :: Xing Profil :: Wunschtacho :: JustPowder :: conject
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #9  
Alt 18.05.08, 19:48
Forum Newbie
 
Registriert seit: 05.05.08
Alter: 24
Beiträge: 19

Ja, und ich finds auch klasse dass du so engagiert am helfen bist

Kanns sein, dass es bei dem Hook noch einen kleinen Wort-Dreher im Quelltext gibt?
Hook heißt HookBefore, aber aufgeerufen wird BeforeHook?

class.tx_powermail_pi1.php ab Zeile 163.
PHP-Code:
    function hook_main_content_before() {
        if(
is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['powermail']['PM_MainContentHookBefore'])) { // Adds hook for processing
            
foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['powermail']['PM_MainContentHookBefore'] as $_classRef) {
                
$_procObj = & t3lib_div::getUserObj($_classRef);
                
$_procObj->PM_MainContentBeforeHook($this->sessionfields$this->piVars$this); // Get new marker Array from other extensions
            



/edit:
Habe nun eben mal $_procObj->PM_MainContentBeforeHook unbenannt in $_procObj->PM_MainContentHookBefore, und so zeigt mir zwar ein print_r (auch in class.tx_powermail_pi1.php) wieder dass es richtig ersetzt wurde - aber in der empfangenen Mail steht immer noch das ursprünglich eingegebene drinne.

Geändert von flowtec (18.05.08 um 19:55 Uhr).
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #10  
Alt 18.05.08, 21:00
Benutzerbild von einpraegsam.net
Forum Stammgast
 
Registriert seit: 11.05.07
Ort: Nürnberg
Alter: 29
Beiträge: 252

1) Das spielt überhaupt keine Rolle
Hookname: PM_MainContentHookBefore
Erwartet Funktion: M_MainContentBeforeHook()

2) Hast du das gemacht, was ich geschrieben habe: Session lesen und neu schreiben?
Session holen:
PHP-Code:
$GLOBALS['TSFE']->fe_user->getKey("ses"$this->extKey.'_'.$this->cObj->data['uid']); 
Session speichern:
PHP-Code:
$GLOBALS['TSFE']->fe_user->setKey("ses"'powermail_'.$this->cObj->data['uid'], $piVars);
$GLOBALS['TSFE']->storeSessionData(); 
__________________
einpraegsam.net alias wunschtacho

Powermail :: Einprägsam :: Xing Profil :: Wunschtacho :: JustPowder :: conject
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
Antwort


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are An


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hook erstellen?! navyseal commerce 3 03.11.07 08:39
Hook getMainFields linpin Extension modifizieren oder neu erstellen 0 15.08.07 10:07
Übersicht Hook-Möglichkeiten Armin Extension modifizieren oder neu erstellen 10 19.06.07 14:53
FE Hook gesucht Spyker Extension modifizieren oder neu erstellen 1 30.03.07 12:18
Hook problem mab82 TYPO3 4.x Fragen und Probleme 1 21.03.07 16:08


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr.


Powered by vBulletin® Version 3.6.8 Patch Level 2 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0
Template-Modifikationen durch TMS