#1  
Alt 16.05.08, 13:06
Forum Newbie
 
Registriert seit: 05.05.08
Alter: 25
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
Unterstützen Sie das Forum und buchen Sie Ihren Webspace beim
T3N Testsieger, dem Webhoster der auch dieses Forum hostet!


  #2  
Alt 17.05.08, 18:13
Benutzerbild von einpraegsam.net
Forum Crack
 
Registriert seit: 11.05.07
Ort: München
Alter: 31
Beiträge: 1.014

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 
__________________
Powermail :: einpraegsam.net :: Follow Me :: XING profile :: 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, 17:39
Forum Newbie
 
Registriert seit: 05.05.08
Alter: 25
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 17: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, 18:00
Benutzerbild von einpraegsam.net
Forum Crack
 
Registriert seit: 11.05.07
Ort: München
Alter: 31
Beiträge: 1.014

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'
__________________
Powermail :: einpraegsam.net :: Follow Me :: XING profile :: 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, 18:59
Forum Newbie
 
Registriert seit: 05.05.08
Alter: 25
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, 19:10
Benutzerbild von einpraegsam.net
Forum Crack
 
Registriert seit: 11.05.07
Ort: München
Alter: 31
Beiträge: 1.014

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?
__________________
Powermail :: einpraegsam.net :: Follow Me :: XING profile :: 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, 19:24
Forum Newbie
 
Registriert seit: 05.05.08
Alter: 25
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, 19:50
Benutzerbild von einpraegsam.net
Forum Crack
 
Registriert seit: 11.05.07
Ort: München
Alter: 31
Beiträge: 1.014

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
__________________
Powermail :: einpraegsam.net :: Follow Me :: XING profile :: 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, 20:48
Forum Newbie
 
Registriert seit: 05.05.08
Alter: 25
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 20: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, 22:00
Benutzerbild von einpraegsam.net
Forum Crack
 
Registriert seit: 11.05.07
Ort: München
Alter: 31
Beiträge: 1.014

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(); 
__________________
Powermail :: einpraegsam.net :: Follow Me :: XING profile :: 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

Lesezeichen

Themen-Optionen
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 hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


LinkBacks (?)
LinkBack to this Thread: http://www.typo3forum.net/forum/powermail/29114-hook-8-sessiondata-ndern.html
Erstellt von For Type Datum
TYPO3.net - Powermail: $sessiondata ndern und mehrere fields zusammen prfen This thread Refback 14.08.08 23:26
TYPO3.net - Powermail: $sessiondata ndern und mehrere fields zusammen prfen This thread Refback 18.06.08 15:45
TYPO3.net - Powermail: $sessiondata ndern und mehrere fields zusammen prfen This thread Refback 18.06.08 14:34
TYPO3.net - Powermail: $sessiondata ndern und mehrere fields zusammen prfen This thread Refback 02.06.08 15:05
TYPO3.net - Powermail: $sessiondata ndern und mehrere fields zusammen prfen This thread Refback 18.05.08 01:55

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165