Zum Inhalt springen

select form per TS ausgeben

Erstellt am 12. Oktober 2008 · 6 Antworten · letzte Antwort am 13. Oktober 2008

Tags: Frage

saoirse ·

Hallo,

ich möchte gern ein Formular per Typoscript auf einer Page ausgeben - leider bekomm ich bis jetzt nichts angezeigt.

page = PAGE
page.typeNum = 0
page.stylesheet = fileadmin/template/css/main.css
page.10 = TEMPLATE
page.10 {
	template = FILE
	template.file = fileadmin/template/html/main.html
	workOnSubpart = DOCUMENT_BODY
	subparts.CONTENT < styles.content.get
}

#-> bis hier funktioniert alles 

lib.test = COA
lib.test {
	10 = TEXT

        # id=7 = Page wo die form ausgegeben werden soll
	10.value = <form action="7" method="get">
	
	20 = TEXT
	20.value = <label for="thema">Thema:</label>
	
	30 = TEXT
	30.value = <select id="thema" name="thema" size="1">

}

Muss ich im html Template ebenfalls ein <form> element anlegen? Ich arbeite ohne TV.

gruß
saoirse

saoirse ·

das hab ich ganz vergessen. :o

page.20 < lib.news_filter

Jetzt hab ich aber noch zwei Sachen, die mir noch nicht gefallen.

Bis jetzt wird "Thema: und ein leeres Dropdown-Menü" auf der ersten Seite angezeigt.

Allerdings möchte ich gern, dass dieses Menü nur auf der Seite mit der ID=7 angezeigt wird. Ich dachte, dass geht über

<form action="7" method="get">

Die zweite sache ist, dass das Menü noch leer ist. Über ein Element vom Typ CONTENT möchte ich gern Daten auslesen, die dann in diesem Dropdown Menü stehen sollen - wie muss ich das in lib.test einbinden?

get_content = CONTENT
#... (tabelle etc. auswählen)

lib.news_filter = COA
lib.news_filter {
	10 = TEXT
	10.value = <form action="7" method="get">
	
	20 = TEXT
	20.value = <label for="thema">Thema:</label>
	
	30 = TEXT
	30.value = <select id="thema" name="thema" size="1">
	
	40 < get_content
	40.select.where = parent_category= ##Thema-ID##
	
}

Wo ich mir nicht sicher bin, ist die ##Thema-ID##. Was stellt diese ID dar und wie komm ich auf die richtige?

gruß
saoirse

freshman17 ·

Wieso benutzt du keine Extension dafür, außerdem gibt es für Formulare das FORM-Objekt.

Kleines Beispiel:

###Formular###
tt_content.mailform = COA
tt_content.mailform {
  20 = FORM
  20 {
    dataArray {
      10.label = Name:
      10.type = name=input
      10.value =
      10.required = 1
      20.label = Auswahl
      20.type = auswahl=select
      20.valueArray {
        10.label = wert1
        10.value = 1
        20.label = wert2
        20.value = 2
        20.selected = 1
      }
      30.type = senden=submit
      30.value = Senden
    }
  }
}
lib.formular < tt_content.mailform

Die Ausgabe erfolg in einer Tabele, falls du kein Lust darauf hast kannst du die nötigen Anpassungen unter

...\typo3\sysext\css_styled_content\static in der Datei setup.txt machen.

Ich würde trotzdem eine Extension benutzen da diese bequemer sind.

Viel Spaß

saoirse ·

vielen Dank für deinen Ansatz.

Wieso benutzt du keine Extension dafür, außerdem gibt es für Formulare das FORM-Objekt.

Kann ich hier die Anzahl der Labels auch variabel lassen? Eigentlich möchte ich gern Daten aus einer Tabelle der Datenbank auslesen und diese sollen dann die Labels darstellen. Konkret geht es um die tt_news_cat Tabelle aus der ich die vorhandenen Kategorien auslesen möchte.

Wie kann ich diese Daten, die sich in

get_content = CONTENT

befinden sollen, in die Tabelle übernehmen?

Als zweite Frage habe ich noch, wie man es hinbekommt, dass dieses Formular nur auf der Seite mit der ID=7 ausgegeben wird? Bis jetzt steht dieses Formular in einem extension-Template welches in das Root-Template eingebunden wird. Funktioniert das über eine if-Abfrage?

gruß
saoirse

freshman17 ·

1. Also Daten holt man sich generell mit dem Datentyp getText. In der TSref gibt es die Funktion/Eigenschaft data (von stdWrap) die sich für solche Sachen bestens eignet. Außerdem ist da ein Typ DB: der es erlaubt auf alle Tabellen die im TCA eingetragen sind zuzugreifen.

Syntax:

DB: tabellenname : uid : feldname

Beispiel:

temp.label = Text
temp.label = DB:tt_news_cat:123:blabla

2. Hier sind Conditions hilfreich. Im Beispiel wird das TLO nur für die Seite mit der PID7 erzeugt

[globalVar = TSFE:id = 7]
lib.news_filter = COA
lib.news_filter {
...
}
lib.news_filter < tt_content.mailform
[GLOBAL]
saoirse ·

vielen Dank für deine Hilfe. Das mit der globalVar hab ich verstanden und übernommen.

der TSref gibt es die Funktion/Eigenschaft data (von stdWrap) die sich für solche Sachen bestens eignet

hab ich mir angeschaut.

plugin.tt_news.categorySelection.data = GPvar : categories

Kann man die Ausgabe oder den Inhalt dieser Variablen überprüfen? So dass man sieht, welchen Inhalt sie besitzt? Das Problem ist nämlich, dass sich die Kategorien in einem SysFolder mit Id=11 befinden und die Select-Anweisung auf der Seite mit ID=7 angezeigt werden sollen.

hab dann im Manual zur tt_news einen Ansatz gefunden (mit einigen Kommentaren von mir):

[globalVar = TSFE:id = 7]

#glaube dass diese Zeile wirkungslos ist hier
plugin.tt_news.categorySelection.data = GPvar : categories

get_categories = CONTENT
get_categories {
     table = tt_news_cat
     select {
    
         #id vom sysfolder wo kategorien gelistet sind 
         pidInList = 11

         where = parent_category=0
         orderBy = title
     }
     
    renderObj = COA
    renderObj {
        10 = TEXT

        #wie wird hier die uid bestimmt? 
        10.field = uid


        10.dataWrap = <option value="|">
        10.insertData = 1
        
        20 = TEXT
        20 {
            field = title
            wrap = <strong>|</strong>
        }
    }
}

#anschließend möchte ich gern den Inhalt dieser Abfrage ausgeben 

lib.news_filter = COA
lib.news_filter {
	10 = TEXT
	10.value = <form action="7" method="get">
	
	20 = TEXT
	20.value = <label for="thema">Thema:</label>
	
	30 = TEXT
	30.value = <select id="thema" name="thema" size="1">
	
	40 < get_categories
	40.select.where = parent_category= ##Thema-ID##	
}

page.20 < lib.news_filter

[GLOBAL]

bis jetzt sehe ich lediglich "Thema: + eine Auswahlmöglichkeit" jedoch ohne jeglichem Inhalt.

gruß
saoirse