Nach einer Anfrage habe ich mich entschlossen, das hier zu posten, falls jemand mal ein ähnliches Problem hat.
Aufgabenstellung:
Selecterbox (Dropdown) in Powermail mit beliebigen Werten aus Datenbank
Lösung:
1. Neues Powermail Feld anlegen (typoscript) mit lib.object:
Bild: design-and-style.de/…/pm_select1.gif
2. Eine Selectabfrage in TS (Hole name, uid von tt_address der Seite 5):
Bild: design-and-style.de/…/pm_select2.gif
Hier nochmal zum Kopieren:
lib.object = COA_INT
lib.object {
10 = TEXT
10.value = <label for="uid33">Select:</label>
20 = CONTENT
20.wrap = <select id="uid33" name="tx_powermail_pi1[uid33]" size="1">|</select>
20 {
table = tt_address
select {
pidInList = 5
orderBy = name
}
renderObj = COA
renderObj {
10 = COA
10 {
10 = TEXT
10 {
field = uid
wrap = <option value="|">
}
20 = TEXT
20 {
field = name
wrap = |</option>
}
}
}
}
}
Ergebnis:
Bild: design-and-style.de/…/pm_select3.gif
Dynamische Selecterbox, mit dem HTML Code:
<label for="uid33">Select:</label>
<select id="uid33" name="tx_powermail_pi1[uid33]" size="1">
<option value="23">Name1</option>
<option value="24">Name2</option>
</select>
Hi,
nachdem genau diese Anfrage nun bei mir gelandet ist, weil's nicht geklappt hat ;-) :
mit COA_INT scheint's nicht zu funktionieren (keine Ausgabe im Frontend), mit COA geht's aber...
Grüße, Tina
tga schrieb
mit COA_INT scheint's nicht zu funktionieren (keine Ausgabe im Frontend), mit COA geht's aber...
dann scheinst du nicht die neueste TYPO3 Version zu haben 😉
Moinz,
ich brauche das eigentlich auch. Nur muss ich die Daten aus einer Tabelle holen, die nicht in TYPO3 angelegt/gepflegt wird.
Die heisst einfach adressen und so habe ich die eingebunden:
lib.object = COA_INT
lib.object {
10 = TEXT
10.value = <label for="uid33">Markt:</label>
20 = CONTENT
20.wrap = <select id="uid33" name="tx_powermail_pi1[uid33]" size="1">|</select>
20 {
table = adressen
select {
#pidInList = 5
orderBy = Ort
}
renderObj = COA
renderObj {
10 = COA
10 {
10 = TEXT
10 {
field = uid
wrap = <option value="|">
}
20 = TEXT
20 {
field = Ort
wrap = |</option>
}
}
}
}
}
Nur passiert da nix. Müsste doch eigentlich klappen oder?
Damit dein Select funktioniert, muss die Tabelle T3 konform sein (mit tx_ anfangen...)
Hi,
danke, so was habe ich mir schon fast gedacht.
Nur bekomme ich nun diesen Fehler:
NO entry in the $TCA-array for the table "tx_markt_adressen". This means that the function enableFields() is called with an invalid table name as argument.
Wie genau sieht denn eine T3 konforme Tabelle aus? Ich habe schon uid, pid, hidden, deleted angelegt. Oder muss ich da in TYPO3 noch was verändern?
So nun habe ich die Tabelle per Kickstarter angelegt.
Das klappt nun.
Hallo!
Das Beispiel für eine Drop-down-Liste per TS funktioniert so weit sehr gut - danke dafür!
Ein Problem tauch bei mir allerdings auf, wenn ich versuche ein Feld aus bestimmten DB-Einträgen zu erstellen und dieses dann als Komma separierte Liste in einer anderen Tabelle zu speichern.
Ich habe z.B. eine Tabelle, die verschiedene Anwendungen beinhaltet. Aus diesen soll der User die zutreffenden Auswählen und dann soll das ganze in einem DB-Feld der tt_news gespeichert werden.
Mein Ansatz:
lib.applications = COA_INT
lib.applications {
10 = TEXT
10.value = <label for="uid901">Applications:</label>
20 = CONTENT
# Hier wird die Abbildung auf ein PHP-Array vorbereitet, um mehrere werte zu übertragen
20.wrap = <select id="uid901" name="tx_powermail_pi1[uid901][]" size="7" multiple="multiple">|</select>
20 {
table = tx_my_applications
select {
pidInList = 109
orderBy = title
}
renderObj = COA
renderObj {
10 = COA
10 {
10 = TEXT
10 {
field = uid
wrap = <option value="|">
}
20 = TEXT
20 {
field = title
wrap = |</option>
}
}
}
}
}
Der Code erzeugt eine korrekte Auswahlliste. Nach dem ausfüllen des Formulars weden mir die Werte dann zur Kontrolle von Powermail so angezeigt:
Problem 1: Der Name des Feldes fehtlt
Problem 2: Statt der bezeichner stehen dort nur die IDs
Daraus ergibt sich dann auch
Problem 3: Von den Werten wird keiner in der DB gespeichert, das Feld bleibt also leer.
Das Speichern erfolgt so:
plugin.tx_powermail_pi1 {
dbEntry {
tt_news {
_enable = TEXT
_enable.value = 1
pid = TEXT
pid.value = 499
tstamp = TEXT
tstamp.data = date:U
# ...
tx_my_applications = TEXT
tx_my_applications.data = TSFE:fe_user|sesData|powermail_922|uid901
# ...
}
Gibt es eine Lösung, um die 3 Fallstricke zu überwinden?
Gruß
maxhb
I solved the problem with the field name by replacing the uid with the fieldname itself. See the example:
lib.object = COA_INT
lib.object {
10 = TEXT
10.value = <label for="uid22">Evenement:</label>
20 = CONTENT
20.wrap = <select id="uid22" name="tx_powermail_pi1[uid22]" size="1">|</select>
20 {
table = tx_kbeventboard_category
select {
pidInList = 375
orderBy = category
}
renderObj = COA
renderObj {
10 = COA
10 {
10 = TEXT
10 {
field = [b]category[/b] wrap = <option value="|">
}
20 = TEXT
20 {
field = category
wrap = |</option>
}
}
}
}
}
In this way the uid is not reported back, but the fieldname itself.
Hope this helps,
Regards,
tanelkoth
Hallo zusammen
Ich hab eine Frage
Ich hab versucht mit untenstehendem code eine DB abzufragen. Diese heist tx_test und das die spalte Name. Nun leider kommt nichts.
Die pidinlist wo finde ich die ?
Wäre cool wenn mir jemand hilft
kyros schriebDie pidinlist wo finde ich die ?
Das ist die ID der Seite auf der die Datensätze gespeichert sind. Findest Du im Seitenbaum heraus, wenn Du mit der Maus über das Icon vor dem Seitennamen gehst.
CU
maxhb