Formhandler TYPO3 Usergroup Bodensee #3tsee 11. Oktober 2012 - Singen (D) Lars Messmer - comsolit AG Seite 1 / 15
Vorteile Solid programmiert, MVC Architektur Immenser Funktionsumfang Sehr gute Integration in andere Extension Geeignet für komplexere Aufgabenstellungen Kann eigentlich alles Gut dokumentiert, mit Examples Wird stetig weiter entwickelt Nachteile Man muss sich zuerst etwas einarbeiten Kein grafisches Backendmodul Seite 2 / 15
Im Einsatz Seite 3 / 15
Im Einsatz Seite 4 / 15
Im Einsatz Seite 5 / 15
Templating langfile.1 = TEXT langfile.1 = {$PATH.mailformformularLang.xml templatefile = TEXT templatefile = {$PATH.mailformformular.html mastertemplatefile.1 = TEXT mastertemplatefile.1.value = {$PATH.mailformtemplatesmasterFormularGlobal.html mastertemplatefile.2 = TEXT mastertemplatefile.2.value = {$PATH.mailformtemplatesmasterFormularFields.html Subparts Sprachmarker ###LLL:vorname### Diverse interessante Marker ###TEMPLATE_ANTISPAM### ###CAPTCHA### ###TEMPLATE_PDF### ###REL_URL### ###total_uploadedfiles### ###IF_[FIELDNAME]=[value]### Includes settings.additionalincludepaths.1 = typo3conf/ext/myextension/hooks/ Seite 6 / 15
Templating Mastertemplate (HTML) <!-- ###master_input_small### --> <div class= row > <div class= three columns > <label for= ###fieldname### >###LLL:###fieldname###### ###required_###fieldname######</label> </div> <div class= nine columns > <input class= small input-text type= text size= 30 id= ###fieldname### name= ###formvaluesprefix###[###fieldname###] value= ###value_###fieldname###### /> ###error_###fieldname###### <div class= one columns sign > ###validate_###fieldname###### </div> </div> </div> <!-- ###master_input_small### --> Language File (XML) <?xml version= 1.0 encoding= utf-8 standalone= yes?> <T3locallang> <data type= array > <languagekey index= default type= array > <label index= required >Felder mit * sind Pflichtfelder!</label> <label index= title >Anrede</label> <label index= choose >Bitte wählen</label> <label index= ms >Frau</label> <label index= mr >Herr</label> Seite 7 / 15
Templating Formtemplate (HTML) <!-- ###TEMPLATE_FORM1### begin --> ###master_multipart-form-start_contact-form### ###master_spamprotection-timecheck### ###master_section-start### ###master_information_required### ###master_input_small_title### ###master_input_small_name### ###master_input_small_e-mail### ###master_submit### ###master_section-end### ###master_multipart-form-end_contact-form### <!-- ###TEMPLATE_FORM1### --> E-Mail template (HTML) <!-- ###TEMPLATE_EMAIL_ADMIN_PLAIN### --> ###master_email-admin-start-plain### <!-- ###ISSET_title### --> ###master_email-line-plain_title### <!-- ###ISSET_title### --> <!-- ###ISSET_name### --> ###master_email-line-plain_name### <!-- ###ISSET_name### --> ###master_email-admin-end-plain### <!-- ###TEMPLATE_EMAIL_ADMIN_PLAIN### --> (eigene Plain und HTML Parts) Seite 8 / 15
Preprocessor preprocessors { 1.class = Tx_Formhandler_PreProcessor_LoadDefaultValues 1.config { 1 { field.defaultvalue = {$field.value amount.defaultvalue = {$amount.value 2.class = Tx_FormhandlerPayment_PreProcessor_LoadSession 2.config { Marker markers { marker = TEXT marker.value = {$value.marker marker = CONTENT marker { table = static_countries renderobj = COA renderobj { 10 = TEXT 10.field = cn_iso_2 Seite 9 / 15
Validators validators { 1 { class = Tx_Formhandler_Validator_Default config { fieldconf { title.errorcheck.1 = required email { errorcheck { 1 = required 2 = email 3 = isnotindbtable 3 { table = fe_users field = email showhidden = 1 # for an array of checkboxes documents.errorcheck { 1 = minitems 1.value = 2. Error Wraps singleerrortemplate { totalwrap = <div class errorbox> </span> singlewrap = <span class= error > </span> iserrormarker { default = <img src= {$PATH.imgerrorSign.png /> Seite 10 / 15
Conditions if { 1 { conditions { OR1.AND1 = radiofield = {$value.radiofield istrue { validators { 1 {. isfalse { validators { 1 {. Seite 11 / 15
Interceptor # Order No. saveinterceptors.1.class = Tx_FormhandlerPayment_Interceptor_OrderId settings.saveinterceptors.1.config { # Spam Protection saveinterceptors.2.class = Tx_Formhandler_Interceptor_AntiSpamFormTime settings.saveinterceptors.2.config { mintime.value = 1 mintime.unit = seconds maxtime.value = 1 maxtime.unit = hours redirectpage = {$PAGE.error loggers.1.class = Tx_Formhandler_Logger_DB # Payment Process saveinterceptors.3.class = Tx_FormhandlerPayment_Interceptor_Postfinance saveinterceptors.3.config { #transport: get / curl / post transport = get apiserver = https://e-payment.postfinance.ch/ncol/ # apimode: test / prod apimode = prod Seite 12 / 15
Finisher # send E-Mail 1.class = Finisher_Mail 1.config { checkbinarycrlf = message admin { templatefile = TEXT templatefile.value = {$PATH.mailformtemplatesemailAdmin.html # DmailSubscription 2.class = Tx_Formhandler_Finisher_DmailSubscription 2.config { NewsletterSysfolderId = {$PID.tt_addressFolder # store in DB 3.class = Finisher_DB 3.config { table = tt_content key = uid fields { # Redirect 4.class = Finisher_Redirect 4.config { redirectpage = {$PID.redirectPage Seite 13 / 15
Einsatzgebiet: Normales Formular Multistep Formular mit Conditions Newsletter Registrierung User Registrierung User Login Payment / Bestellformular Seminaranmeldung Datei Upload Formular Datei Request Formular Gästebuch Kommentarformular FAQ Formular Feedback Formular Fragebogen Seite 14 / 15
Links: Offizielle Seite mit Docu und Tutorials: http://www.typo3-formhandler.com/ Forge: http://forge.typo3.org/projects/show/extension-formhandler/ TER: http://typo3.org/extensions/repository/view/formhandler/ #t3see - http://www.t3see.de/ Seite 15 / 15