Antwort
 
LinkBack Themen-Optionen Thema bewerten Ansicht
  #1  
Alt 13.06.08, 00:36
Forum Zuschauer
 
Registriert seit: 13.06.08
Alter: 26
Beiträge: 5

Zusatzfelder werden nicht übernommen - wo liegt das Problem?


Hallo zusammen,

ich versuche seit heute Mittag, der Direct Mail Subscription ein weiteres Feld zuzuweisen. Ich hab es mit "City" und "Company" versucht, dürfte ja egal sein, da sowieso etwas anderes reingeschrieben wird.

Hab alles genauso wie in den Anleitungen gemacht (meine ich zumindest). Im Template wird das Feld angezeigt, aber in der Bestätigungsmail nicht eingefügt. Hab die Änderung im Setup gemacht, was bei den anderen ja meist die Fehlerquelle war.

Mein Setup sieht so aus:

Code:
<INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/templates/tpl/typoscript/c.txt">


<INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/templates/tpl/typoscript/m.txt">


<INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/templates/tpl/typoscript/m_d.txt">


<INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/templates/tpl/typoscript/lastupdate.txt">


#<INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/templates/tpl/typoscript/src.txt">


#<INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/templates/tpl/typoscript/lup.txt">


#<INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/templates/tpl/typoscript/p.txt">


#<INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/templates/tpl/typoscript/num.txt">


<INCLUDE_TYPOSCRIPT: source="FILE: fileadmin/templates/tpl/typoscript/s.txt">

plugin.feadmin.dmailsubscription.edit.fields = name, email, city, hidden

plugin.feadmin.dmailsubscription.create.fields = name, email, city, hidden

plugin.feadmin.dmailsubscription.edit.required = name, email, city

plugin.feadmin.dmailsubscription.create.required = name, email, city
und in die Constants hab ich folgendes eingefügt:

Code:
plugin.feadmin.dmailsubscription.edit.fields = name, email, city, hidden
plugin.feadmin.dmailsubscription.create.fields = name, email, city, hidden
Im Template erstmal:

Code:
<input type="text" name="FE[tt_address][city]">
Ich hatte da auch schon den Text für den Fall, dass das Feld nicht ausgefüllt wurde, eingefügt, aber leider wurde der Text dann dauerhaft angezeigt, auch wenn das Formular noch gar nicht ausgefüllt wurde.

Kann mir jemand sagen, wo der Fehler liegt? Ich komme beim besten Willen nicht mehr weiter.

Vielen Dank schon im Voraus!

Lg,

Felix
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
  #2  
Alt 14.06.08, 10:16
Forum Zuschauer
 
Registriert seit: 13.06.08
Alter: 26
Beiträge: 5

Kann mir keiner helfen?
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 16.06.08, 11:23
Forum Newbie
 
Registriert seit: 14.05.08
Alter: 33
Beiträge: 26
Rotes Gesicht

Ich habe selbiges Problem und hätte gerne auch einen Hinweis!
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 20.06.08, 10:16
Forum Zuschauer
 
Registriert seit: 13.06.08
Alter: 26
Beiträge: 5

Ich bin gerne auch bereit, dafür zu bezahlen, wenn jemand das Problem schnell lösen kann. Meldet euch bitte bei mir.
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 25.06.08, 10:56
Forum Newbie
 
Registriert seit: 14.05.08
Alter: 33
Beiträge: 26

hy cyrus,

hier im forum gibt es einen beitrag dazu. leider finde ich den gerade nicht.

da war auf jeden fall eine lösung für mich:

# Erstellung der Eingabefelder für die Newsletteranmeldung

plugin.feadmin.dmailsubscription.edit.fields = name, email, company, hidden ...

module_sys_dmail_category, module_sys_dmail_html

plugin.feadmin.dmailsubscription.create.fields = name, email, company, hidden

module_sys_dmail_category, module_sys_dmail_html

in meinem fall mußte ich das feld company einfügen. hab das dann noch im html-template
eingebaut und es lief. weitere benennungen der edit.fields habe ich zb aus der mysql datenbank.

vielleicht findest du aber den beitrag ja noch. da steht alles noch besser beschrieben.

gruß

nervkopf
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 26.06.08, 10:26
Forum Zuschauer
 
Registriert seit: 13.06.08
Alter: 26
Beiträge: 5

Hi Nervkopf,

vielen Dank für deine Antwort. Das habe ich aber schon in meinem Template stehen. Wie gesagt, ich habe alles so gemacht wie in den Anleitungen. Trotzdem klappts nicht.

Naja, scheinbar unlösbar. Wir haben jetzt eine andere Lösung gefunden, wenn auch weit weniger elegant .

Lg,

cyrus
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 27.06.08, 13:14
Forum Zuschauer
 
Registriert seit: 24.06.08
Beiträge: 1
Idee

Zusätzliche Felder in einem Formular der Direct Mail Subscription - Lösung


Hallo,

Das Problem bei Direct Mail Subscription ist mir auch aufgefallen.
Das Einstellungen im Typoscript sind notwendig, aber nicht hinreichend.

Für das Speichern der Formulardaten ist folgende Datei zuständig:
Code:
typo3/sysext/cms/tslib/media/scripts/fe_adminLib.inc
Hierbei handelt es sich um eine PHP-Datei. Warum sie die Endung .inc trägt, weiß ich nicht.

Diese Datei prüft, ob die übergebenen Tabellenspalten auch der TCA bekannt sind. Sind sie aber nicht, wenn man sie einfach mit PHPmyAdmin hinzufügt!

Um es elegant hinzubekommen, reicht folgendes:
* Ich installiere Kickstarter (kickstarter).
* Ich erstelle mir mit dem Kickstarter eine neue Extension.
* Ich erweitere die Tabelle tt_address um meine Spalten.
Somit weiß auch die TCA davon, dass es diese Tabellenspalten gibt.




Man muss dann noch auf "View Result" und "WRITE" klicken, um die neu geschriebene Extension zu speichern.
Das reicht. Die tt_address ist nun auch "offiziell" um meine Spalten erweitert und die Formulardaten werden in die Tabelle eingetragen.

Achtung: Die hinzugefügten Tabellenspalten aus dem Beispiel heißen nicht
date_dd usw., sondern im obigen Beispiel tx_dmailsubscgosms_date_dd, je nachdem wie die Extension heißt.
Der Kickstarter nennt die Felder um, um sie eindeutig der neuen Extension zuzuordnen.
(Um dass zu ändern, kann man die ext_tables.php der Extension anfassen, aber das geht mir hier zu weit.)

Fertig.
Viele Grüße und viel Erfolg!
mquintus

--
Wie ich darauf gekommen bin habe ich hier dokumentiert:

Für das Speichern der Formulardaten ist folgende Datei zuständig: typo3/sysext/cms/tslib/media/scripts/fe_adminLib.inc

Hierbei handelt es sich um eine PHP-Datei. Warum sie die Endung .inc trägt, weiß ich nicht,
aber das werde ich sicherlich nochmal herausfinden.

Zuerst schaue ich mir die Funktion
Code:
init
an. Mir fällt auf, dass ich in Zeile 291 den Kommentar lese
Code:
// If incoming data is seen...
Hier werden also die ankommenden Daten verarbeitet.

Ich füge in Zeile etwa 300 folgende Zeile ein:
Code:
 print_r($this->dataArr);
Anscheindend werden alle Formulardaten korrekt übertragen. Meine eingetragenen Werte werden korrekt ausgegeben.
Ich kommentiere den Befehl aus.

Gebe ich folgendenen Code in die .inc Datei
Code:
print_r($this->failure);
erhalte ich, nach Abschicken des Formulars, einen String mit allen Feldern, die nicht korrekt oder gar nicht ausgefüllt waren, aber auf "required" gesetzt sind.
Soweit ist das Verhalten super, ich kommentiere auch diesen Befehl aus.

Code:
//print_r($this->dataArr);
//print_r($this->failure);
//print_r($this->preview);
Als nächstes wird die Funktion
Code:
$this->save
aufgerufen.
In Zeile 841 finden wir diese Funktion.

Die Variable
Code:
$this->cmd
steht bei mir auf
Code:
create
Ich füge direkt hinter die Zeilen ca. 863:
Code:
            default:
                if ($this->conf['create'])    {
                    $newFieldList = implode(',',array_intersect(explode(',',$this->fieldList),t3lib_div::trimExplode(',',$this->conf['create.']['fields'],1)));
folgende Zeile ein:
Code:
                    print_r($this->dataArr);
                    print_r("\n" . $this->fieldList . "\n\n");
                    print_r($newFieldList); die();
Tipp: Seitenquelltext anzeigen lassen!
Ich erhalte folgende Ausgabe:
Code:
Array
(
    [title] => Herr
    [first_name] => asdas
    [last_name] => asfd
    [mobile] => safsdf
    [date_dd] => 01
    [date_mm] => 01
    [date_yyyy] => 2008
    [email] => marius@gosign.de
    [email_oder_sms] => sms
    [module_sys_dmail_html] =>
    [module_sys_dmail_category] => 0
    [hidden] => 1
)

pid,hidden,gender,name,first_name,middle_name,last_name,title,address,building,room,birthday,phone,fax,mobile,www,email,city,zip,company,region,country,image,description,module_sys_dmail_category,module_sys_dmail_html

hidden,first_name,last_name,title,mobile,email,module_sys_dmail_category,module_sys_dmail_html
Da kommen wir der Sache schon näher:
Die erste Ausgabe sind die Werte, die ich in die Datenbank schreiben möchte.
Die zweite Ausgabe sind alle erlaubten Datenbankfelder.
Die dritte Ausgabe gibt mir alle übereinstimmenden Felder: Also alle Felder, die ich in die Datenbanktabelle schreiben möchte UND die erlaubt sind.

Der Fehler liegt also bei:
Code:
$this->fieldList
Aber wo wird dieser Wert gesetzt? Ich schaue mir die Funktion
Code:
 init
nochmal genauer an.

In Zeile 210 finde ich dann die Zuweisung:
Code:
            // Setting the hardcoded lists of fields allowed for editing and creation.
        $this->fieldList=implode(',',t3lib_div::trimExplode(',',$GLOBALS['TCA'][$this->theTable]['feInterface']['fe_admin_fieldList'],1));
Anscheinend sind die erlaubten Felder irgendwo fest in die TCA gecodet. Das erlaubt an dieser Stelle eine schnelle Lösung: Ich schreibe
in die nächste Zeile einfach meine gewünschten Tabellenspalten hinzu, und fertig:
Code:
            // Setting the hardcoded lists of fields allowed for editing and creation.
        $this->fieldList=implode(',',t3lib_div::trimExplode(',',$GLOBALS['TCA'][$this->theTable]['feInterface']['fe_admin_fieldList'],1));
        // added by mquintus @ <firmenname>
        $this->fieldList.=',date_dd,date_mm,date_yyyy,email_oder_sms';
Ganz wichtig: Ich schreibe immer einen Kommentar dazu, dass ich meine manipulierten Stellen wiederfinde!
Außerdem ist ein Komma (,) am Anfang des hinzugefügten Strings notwendig.

Fertig!

Aber sind wir wirklich fertig? Das kann es doch nicht gewesen sein. Schließlich geht es um mehr!
Nun gut, ich gebe zu, dass ich nicht <i>wirklich weiß</i>, warum die zu schreibenden Felder so eingeschränkt sind, und außerdem ist diese Lösung ganz und gar nicht elegant. Z.B. weiß ich nicht, an welchen Stellen diese Prüfung erneut geschieht. Die Seiteneffekte dieser Lösung sind ungeklärt!

Also geht es weiter.
Die Lösung wird wieder auskommentiert.
Code:
            // Setting the hardcoded lists of fields allowed for editing and creation.
        $this->fieldList=implode(',',t3lib_div::trimExplode(',',$GLOBALS['TCA'][$this->theTable]['feInterface']['fe_admin_fieldList'],1));
        // added by mquintus @ <firmenname>
        //$this->fieldList.=',date_dd,date_mm,date_yyyy,email_oder_sms';
Was ich dann gemacht habe, steht gaaaanz oben.

Geändert von mquintus (27.06.08 um 13:25 Uhr). Grund: ach ja ...
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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Gelöst GET Variablen werden in URL nicht richtig übernommen... Winddancer Extension modifizieren oder neu erstellen 1 29.02.08 21:02
RTE-Änderungen werden nicht übernommen Carlo TYPO3 4.x Rich Text Editor 4 10.01.08 16:34
Templateänderungen werden nicht übernommen Bulbiculus TYPO3 4.x Fragen und Probleme 1 30.12.07 23:01
Punktlisten & Nummerierungen werden nicht übernommen paopao TYPO3 4.x Fragen und Probleme 3 28.11.06 16:34
goof_fotoboek - CE-Änderungen werden nicht übernommen 2pauli Alle anderen Extensions 0 09.08.06 16:00


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


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0