Typo3 Formhandler Cheat-Sheet

Donnerstag, 11. Juli 2013

Entweder-Oder Condition

Es gibt zwei Formular-Felder “feld_1″ und “feld_2″. Eines davon soll Pflichtfeld sein, falls das andere nicht ausgefüllt wurde:

plugin.Tx_Formhandler.settings.predef.beispiel {
 
   ...
 
   validators {
      1.class = Tx_Formhandler_Validator_Default
      1.config {
         fieldConf {
            feld_1.errorCheck.1 = required
            feld_2.errorCheck.1 = required
         }
      }
   }
 
   # Im Schritt eins (bezieht sich auf Multistep-Formulare)
   1 {
      # Das erste IF...
      if.1 {
         conditions.OR1.AND1 = feld_1>0
         isTrue.validators.1.config.disableErrorCheckFields = feld_2
      }
      # Das zweite IF...
      if.2 {
         conditions.OR1.AND1 = feld_2>0
         isTrue.validators.1.config.disableErrorCheckFields = feld_1
      }
   }
 
   ...
}

Oder-oder-oder Condition

Es gibt mehrere Formular-Felder. Pflicht ist nur, mindestens eines davon auszufüllen – es ist aber egal, welches:

plugin.Tx_Formhandler.settings.predef.beispiel {
 
   ...
 
   validators {
      1.class = Tx_Formhandler_Validator_Default
      1.config {
         fieldConf {
            feld_1.errorCheck.1 = required
            feld_2.errorCheck.1 = required
            feld_3.errorCheck.1 = required
            feld_4.errorCheck.1 = required
         }
      }
   }
 
   1 {
      if.1 {
         conditions {
            OR1.AND1 = feld_1>0
            OR2.AND1 = feld_2>0
            OR3.AND1 = feld_3>0
            OR4.AND1 = feld_4>0
         }
         isTrue.validators.1.config.disableErrorCheckFields = feld_1,feld_2,feld_3,feld_4
      }
   }
 
   ...
}

TypoScript Page-Condition: Prüfen, ob ein Feld / Get-Post / GP-Variable mit einem beliebigen String oder Text ausgefüllt oder gesetzt wurde

Das Wipp-Prinzip: Wenn ein bestimmtes Feld ausgefüllt ist, sollen andere Felder nicht mehr Pflichtfelder sein. Problem war, dass hier über eine Page-Condition in Typo3 gearbeitet werden musste – aber wir keine Lösung gefunden haben, die pagecondtion nach einem leeren String suchen zu lassen.
Für Suchmaschinen: Per TypoScript Pagecondition prüfen, ob leerer String übergeben wurde. GP-Variable auf leeren String prüfen. Get/Post-Variablen auf beliebigen String prüfen. Für Formhandler Page-Condition auf beliebigen Text prüfen, bei leerem String andere Page-Condition. Check, ob Get/Post-Variable beliebigen Wert oder String enthält und Condition, falls GPVar-Variable leer ist. Typoscript Typo3 Page Condition check for empty string. Typoscript Typo3 Pagecondition check Get-Post Variables for any Character, Word, Value or String

Bei numerischen Werten relativ logisch: Page-Condition zum Prüfen, ob eine Get/Post-Variable einen numerischen Wert enthält, der größer als 0 ist:

[globalVar = GP:formhandler|iban > 0]
   # IBAN war größer als 0
[global]

Bei einem String etwas seltsame Schreibweise: Page-Condition zum Prüfen, ob eine Get/Post-Variable einen beliebigen String enthält – mit Hilfe von [else]

[globalVar = GP:formhandler|iban = ]
   # Leer? Nichts machen
[else]
   # NICHT leer... jetzt was machen
[global]

In dem Formhandler-Problem sollte eine IBAN und BIC – oder die Konto-Nr und BLZ angegeben werden. Nur eines von beiden ist Pflicht. Lösung war auch hier das [else]:

[globalVar = GP:formhandler|iban = ]
   # Leerer String? Dann nichts machen
[else]
   # KEIN leerer String, also die Überprüfung der anderen Felder deaktivieren
   plugin.Tx_Formhandler.settings.predef.nachtmahl.validators.1.config.fieldConf {
      bank_acc_no >
      bank_code >
   }
[global]

TypoScript Page-Condition: Prüfen, ob ein Feld / Get-Post / GP-Variable leer oder nicht gesetzt ist und keinen Wert enthält

Page-Condition zum Prüfen, ob eine Get/Post-Variable leer ist:

[globalVar = GP:formhandler|iban = ]
   # Leerer String... jetzt was machen
[global]