Zum Inhalt springen

Eleganter und Select?

Erstellt am 12. März 2008 · 7 Antworten · letzte Antwort am 12. März 2008

Tags: Frage

DocMcFly ·

Hallo,

Ich bin gerade bei der Userliste (Ext: newloginbox).
Da kann man mit "customProcessing" die Ausgaben noch formatieren. Als Beispiel wurde da Image angeben (s.u.).

Beim Geburtstag (date_of_birth) funktioniert das auch prima (auch s.u.). In der Geschechterfrage (gender) habe ich auch eine Lösung gefunden (s.u.). Da ist aber meine Frage geht das auch eleganter? Gibt es nicht auch ein "else" bei dem "if" ?

Und bei "static_info_country" stosse ich völlig an meine TypoScript-Grenzen... Ich bekomme mit den Zeilen:

  static_info_country = TEXT
  static_info_country.field = static_info_country

das iso_3-Kürzel bspw.: DEU. Aber bei meinem Versuch die Tabelle static_countries nach dem richtigen Ländernamen zu fragen, bin ich kläglich gescheitert. Mein Frage wie mach ich das?

Ich bin für jede Antwort dankbar... Sonst muss ich in den PHP-Quelltext eingreifen... #evil#

Gruß Clemens

plugin.tx_newloginbox_pi3{
  singleView.customProcessing{
    image.file.import = fileadmin/user_upload/fe_images/	
    date_of_birth = TEXT
    date_of_birth {
      field = date_of_birth
      strftime = %A, %e. %B %Y
    }
    gender = COA
    gender.1 = TEXT
    gender.1{
      value = Herr	
      if.value.field = gender
      if.equals = 0
    }
    gender.2 = TEXT
    gender.2{
      value = Frau
      if.value.field = gender
      if.equals = 1
    }

    static_info_country = TEXT
    static_info_country.table = static_countries
    static_info_country.select {                              
      andWhere = cn_iso_3 = {field:static_info_country}
    }
DocMcFly ·

Danke für die schnelle Antwort und den Hinweis auf den Patch... ich hab mich schon für zu blöd gehalten.

Aber jetzt noch mal zu meinem Problem... Können die folgenden TS-Zeilen überhaupt funktionieren? Oder ist das Hum-Bug?

Ich hab mir das einfach mal so zusammengereimt... weil ich bei den anderen TS-Objekten auch über "field" an den Wert ran gekommen bin.

static_info_country = TEXT
    static_info_country.table = static_countries
    static_info_country.select {                             
    andWhere = cn_iso_3 = {field:static_info_country}
}

Gruß Clemens

just2b ·

Hallo,

das ist natürlich humbug.

das select gehört zum cObj CONTENT und das ganze schaut dann ca so aus

lib.rfc7812 = CONTENT
lib.rfc7812 {
	table =  static_countries
	select {
		pidInList = 0
		max = 20
		orderBy =cn_official_name_en
	}
	
	renderObj = TEXT
	renderObj {
		value = <tr><td></td><td>{field:uid}</td> <td>{field:cn_official_name_en}</td><td>{field:cn_capital}</td></tr>
		insertData = 1
		
	}
	stdWrap.wrap = <table cellpadding="1" cellmargin="1"><th><td>Uid</td><td>Name En</td><td>Capital</td></th>|</table>
}

und spuckt das aus http://www.ringer.it/test/rfc-7812-cobj-content-static.html

georg

DocMcFly ·

Was ich mich aber jetzt frage: Ich will ja nur einen Eintrag und nicht die ganze Liste. Dazu brauche ich doch die whrere-Klausel...
Weil aber '.where' nicht von .stdWrap abgeleitet ist - muss ich '.andWhere' nehmen...

andWhere = cn_iso_3 = {field:static_info_country}

Darum auch "{field:static_info_country}". Ich hab irgendwie im Gefühl das wird nicht funktionieren... aber ich wüsste nicht, wie ich sonst den Wert "static_info_country" rein bekomme.

Für jede Erklärung dankbar...
Clemens

PS: Danke für deinen TS-Code. Besonders:

renderObj = TEXT
renderObj { .... }

erweiterte sehr mein Verständnis für TS.

just2b ·

wenn du mit field arbeiten willst, dann brauchst du dann einfach ein
andWhere.insertData = 1

sonst im install tool mal sqldebug einschalten, dann siehst du genau was generiert wird

georg

DocMcFly ·

Super vielen Dank... Die DB-Zugriffe funktionieren dank Deinem Rat und Deinen Patch prima...

Danke und gruß Clemens...

PS: Muss nun nur noch die DB in Punkto Zeichensatz von "latin1_swedish_ci" auf UTF8 umstellen, damit die Umlaute funktionieren... 😢 Anfängerfehler!!!

Hier für alle, die die UserList von der newloginbox etwas in einer etwas besser lesbareren Form haben wollen:

    gender = COA
    gender.1 = TEXT
    gender.1{
      value = Herr	
      if.value.field = gender
      if.equals = 0
    }
    gender.2 = TEXT
    gender.2{
      value = Frau
      if.value.field = gender
      if.equals = 1
    }
    
    
    static_info_country = CONTENT
    static_info_country{
      table =  static_countries
      select{
        insertData = 1
        andWhere = cn_iso_3 = '{field:static_info_country}'
        andWhere.insertData = 1
        pidInList = 0
        max = 1
      }
      renderObj = TEXT
      renderObj {
         value = {field:cn_short_local}
         insertData = 1
      }
    }
    
    zone = CONTENT
    zone{
      table =  static_country_zones
      select{
        insertData = 1
        andWhere = zn_country_iso_3 = '{field:static_info_country}' AND zn_code  = '{field:zone}'
        andWhere.insertData = 1
        pidInList = 0
        max = 1
      }
      renderObj = TEXT
      renderObj {
         value = {field:zn_name_local}
         insertData = 1
      }
    }