SlideShare a Scribd company logo
FormZ • typo3-formz.com 1github.com/romm/formz → go and ★ it!
TYPO3 FormZ
A modern form handler for extensions
FormZ • typo3-formz.com 2github.com/romm/formz → go and ★ it!
Romain Canon
PHP developer on TYPO3 since 2012
Currently living in Paris
@Rommsteinz
romain.hydrocanon@gmail.com
@romm
FormZ • typo3-formz.com 3github.com/romm/formz → go and ★ it!
Summary
• What and why?
• How?
• Demo
• Next?
FormZ • typo3-formz.com 4github.com/romm/formz → go and ★ it!
What is FormZ?
• A TYPO3 extension (TER, Packagist, GitHub)
• A strong API for building web-forms with Extbase & Fluid
• Time saving tool for developers and integrators
FormZ • typo3-formz.com 5github.com/romm/formz → go and ★ it!
Why FormZ?
• My customer needed a powerful and modern form manager for
dozens of forms (simulations, registration, “business”, contact)
• EXT:formhandler?
• Old and not maintained a lot (not maintained anymore, since september 2016)
• PI-based with no Fluid support
• No frontend JavaScript validation
• EXT:powermail?
• Too “specific”
FormZ • typo3-formz.com 6github.com/romm/formz → go and ★ it!
“Eh dude, TYPO3 v8 provides a brand new form builder!”
• Development of both extensions probably began at the same time
No communication led to two separate projects
• The new form builder is for TYPO3 8.7; we needed something for
TYPO3 6.2
FormZ • typo3-formz.com 7github.com/romm/formz → go and ★ it!
“Eh dude, TYPO3 v8 provides a brand new form builder!”
• Main target audience:
• EXT:form
→ For editors/integrators
→ Simple forms with no complex business rules
→ Powerful UI to manage the basic rules of the forms
• EXT:formz
→ For developers/integrators
→ Can handle huge forms with lots of business rules
→ Built by a developer for developers: easy to understand, maintain,
evolve
FormZ • typo3-formz.com 8github.com/romm/formz → go and ★ it!
What does FormZ provide?
FormZ • typo3-formz.com 9github.com/romm/formz → go and ★ it!
TypoScript based configuration
• Easy inheritance
config.tx_formz {
forms {
RommFormzExampleFormExampleForm {
fields {
name {
validation {
required < config.tx_formz.validators.required
}
}
email {
validation {
required < config.tx_formz.validators.required
isEmail < config.tx_formz.validators.email
}
}
}
}
}
}
FormZ • typo3-formz.com 10github.com/romm/formz → go and ★ it!
TypoScript based configuration
• Easy overriding
config.tx_formz {
forms {
RommFormzExampleFormExampleForm {
fields {
gender {
validation {
required < config.tx_formz.validators.required
isValid < config.tx_formz.validators.containsValues
isValid {
messages {
default.value = Please select a correct value!
}
options {
values {
10 = male
20 = female
}
}
}
}
}
}
}
}
}
FormZ • typo3-formz.com 11github.com/romm/formz → go and ★ it!
TypoScript based configuration
• Could be YAML or plain PHP (incoming!)
FormZ • typo3-formz.com 12github.com/romm/formz → go and ★ it!
Fluid templating
• Build you form however you want/need, by using the full power of
Fluid: partials, view helpers, conditions, etc.
FormZ • typo3-formz.com 13github.com/romm/formz → go and ★ it!
Fluid templating
• Benefit from built-in view helpers:
• Field layouts (native support for Twitter Bootstrap and Foundation)
• Automatic CSS classes (for valid/invalid status)
• More incoming!
FormZ • typo3-formz.com 14github.com/romm/formz → go and ★ it!
JavaScript frontend framework
• Instant custom validation for the user (not the ugly default HTML5
browser validation)
FormZ • typo3-formz.com 15github.com/romm/formz → go and ★ it!
JavaScript frontend framework
• All frontend validators have a PHP version
• JavaScript is not needed for FormZ to work well!
Server side validation will always run to ensure data security
FormZ • typo3-formz.com 16github.com/romm/formz → go and ★ it!
JavaScript frontend framework
• You can add your own custom JavaScript validators
FormZ • typo3-formz.com 17github.com/romm/formz → go and ★ it!
Multi language
• Easy translation handling
Customize validation messages
with TypoScript configuration
name {
validation {
required < config.tx_formz.validators.required
required.messages {
default {
key = example_form.error.name_required
extension = formz_example
}
}
}
}
firstName {
validation {
required < config.tx_formz.validators.required
required.messages {
default {
key = example_form.error.first_name_required
extension = formz_example
}
}
}
}
FormZ • typo3-formz.com 18github.com/romm/formz → go and ★ it!
Multi language
• Available in frontend
JavaScript automatically handles translated messages
FormZ • typo3-formz.com 19github.com/romm/formz → go and ★ it!
Robust condition system
• Choose specific situations where fields
should be activated
conditionList {
doesLikeIceCream {
type = fieldHasValue
fieldName = likeIceCream
fieldValue = 1
}
}
fields {
iceCreamFlavors {
activation.expression = doesLikeIceCream
}
}
FormZ • typo3-formz.com 20github.com/romm/formz → go and ★ it!
Robust condition system
• Choose specific situations
where validation should be
activated
conditionList {
countryIsFrance {
type = fieldHasValue
fieldName = country
fieldValue = FR
}
countryIsGermany {
type = fieldHasValue
fieldName = country
fieldValue = DE
}
}
fields {
phoneNumber {
validation {
frenchPhone {
className = MyValidatorFrenchPhoneValidator
activation.expression = countryIsFrance
}
germanPhone {
className = MyValidatorGermanPhoneValidator
activation.expression = countryIsGermany
}
}
}
}
FormZ • typo3-formz.com 21github.com/romm/formz → go and ★ it!
Robust condition system
• Understands logical operations
deliveryChoice {
activation.expression = zipCodeValid && addressValid && (countryIsFrance || countryIsGermany)
}
FormZ • typo3-formz.com 22github.com/romm/formz → go and ★ it!
Dynamic CSS data-attributes
• Automatically added to the <form> HTML tag
• Allows powerful CSS targeting using data-attributes
• fz-value-{field-name} / fz-valid-{field-name} / fz-error-{field-name}
• fz-loading
• More...
• Fully provided by FormZ core
• Works on frontend side (JavaScript) and server side (PHP/Fluid)
FormZ • typo3-formz.com 23github.com/romm/formz → go and ★ it!
Dynamic CSS classes
form[name="exForm"]:not([fz-value-email$="@typo3.org"]) .typo3-user {
display: none;
}
Basic example:
On a registration form: I want to display additional information for “official” TYPO3 users.
FormZ • typo3-formz.com 24github.com/romm/formz → go and ★ it!
Demo
FormZ • typo3-formz.com 25github.com/romm/formz → go and ★ it!
What is coming next?
FormZ • typo3-formz.com 26github.com/romm/formz → go and ★ it!
Middlewares
• Between the request and the controller
• A specific and powerful FormZ context
• Example: pre-fill form values, add complex
validation processes, save to database, send
an email, etc.
FormZ • typo3-formz.com 27github.com/romm/formz → go and ★ it!
Multi-steps form
• Supports separate pages
• Conditional steps
• Database/Session/Other persistence
FormZ • typo3-formz.com 28github.com/romm/formz → go and ★ it!
Substeps
• A new concept that allows pure JavaScript/CSS
step control, for an instant navigation
• Check: https://goo.gl/H6TT69
(https://www.direct-energie.com/particuliers/electricite/simulateur-de-consommation)
FormZ • typo3-formz.com 29github.com/romm/formz → go and ★ it!
More information/support
• Join #ext-formz on Slack!
You don’t have an account? Go on forger.typo3.org/slack
• typo3-formz.com
Official website
• typo3-formz.com/doc
Documentation FR/EN
PDF versions available!
FormZ • typo3-formz.com 30github.com/romm/formz → go and ★ it!
Thanks!

More Related Content

Similar to TYPO3 FormZ

Frankfurt TYPO3 User Group (FTUG) 2017.11.15
Frankfurt TYPO3 User Group (FTUG) 2017.11.15Frankfurt TYPO3 User Group (FTUG) 2017.11.15
Frankfurt TYPO3 User Group (FTUG) 2017.11.15
ManuelSelbach
 
unit1 part 1 sem4 php.docx
unit1 part 1 sem4 php.docxunit1 part 1 sem4 php.docx
unit1 part 1 sem4 php.docx
charvi parth Lastpatel
 
Scraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHPScraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHP
Paul Redmond
 
Make the most of twig
Make the most of twigMake the most of twig
Make the most of twig
Andrew Yatsenko
 
Chapter 08 php advance
Chapter 08   php advanceChapter 08   php advance
Chapter 08 php advance
Dhani Ahmad
 
Javascript Konsole für Entwicklung und Administration
Javascript Konsole für Entwicklung und AdministrationJavascript Konsole für Entwicklung und Administration
Javascript Konsole für Entwicklung und Administration
Alfresco by fme AG
 
What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...
DMC, Inc.
 
Kostiantyn Grygoriev "Wrapping C++ for Python"
Kostiantyn Grygoriev "Wrapping C++ for Python"Kostiantyn Grygoriev "Wrapping C++ for Python"
Kostiantyn Grygoriev "Wrapping C++ for Python"
LogeekNightUkraine
 
Javascript cross domain communication
Javascript cross domain communicationJavascript cross domain communication
Javascript cross domain communication
ChenKuo Chen
 
APEX Behind the Scenes by Scott Spendolini
APEX Behind the Scenes by Scott SpendoliniAPEX Behind the Scenes by Scott Spendolini
APEX Behind the Scenes by Scott SpendoliniEnkitec
 
T3CON08 intelligent webforms with Typo3
T3CON08 intelligent webforms with Typo3T3CON08 intelligent webforms with Typo3
T3CON08 intelligent webforms with Typo3
Rogier Hosman
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHP
Eric Johnson
 
Flamingo Microservice based E-Commerce / Motivations,Backgrounds, Short Intro...
Flamingo Microservice based E-Commerce / Motivations,Backgrounds, Short Intro...Flamingo Microservice based E-Commerce / Motivations,Backgrounds, Short Intro...
Flamingo Microservice based E-Commerce / Motivations,Backgrounds, Short Intro...
i-love-flamingo
 
Fork CMS
Fork CMSFork CMS
Fork CMS
Lester Lievens
 
Introduction to Office Development Topics
Introduction to Office Development TopicsIntroduction to Office Development Topics
Introduction to Office Development Topics
Haaron Gonzalez
 
POX to HATEOAS: Our Company's Journey Building a Hypermedia API
POX to HATEOAS: Our Company's Journey Building a Hypermedia APIPOX to HATEOAS: Our Company's Journey Building a Hypermedia API
POX to HATEOAS: Our Company's Journey Building a Hypermedia API
Luke Stokes
 
TYPO3 - The Enterprise Open Source CMS - Rania Marou - FOSSCOMM 2015
TYPO3 - The Enterprise Open Source CMS - Rania Marou - FOSSCOMM 2015TYPO3 - The Enterprise Open Source CMS - Rania Marou - FOSSCOMM 2015
TYPO3 - The Enterprise Open Source CMS - Rania Marou - FOSSCOMM 2015
Rania Marou
 
Php through the eyes of a hoster: PHPNW10
Php through the eyes of a hoster: PHPNW10Php through the eyes of a hoster: PHPNW10
Php through the eyes of a hoster: PHPNW10
Combell NV
 
Automate Studio Training: Materials Maintenance Tips for Efficiency and Ease ...
Automate Studio Training: Materials Maintenance Tips for Efficiency and Ease ...Automate Studio Training: Materials Maintenance Tips for Efficiency and Ease ...
Automate Studio Training: Materials Maintenance Tips for Efficiency and Ease ...
Precisely
 
Andrii Yatsenko "Make the most of Twig"
Andrii Yatsenko "Make the most of Twig"Andrii Yatsenko "Make the most of Twig"
Andrii Yatsenko "Make the most of Twig"
Fwdays
 

Similar to TYPO3 FormZ (20)

Frankfurt TYPO3 User Group (FTUG) 2017.11.15
Frankfurt TYPO3 User Group (FTUG) 2017.11.15Frankfurt TYPO3 User Group (FTUG) 2017.11.15
Frankfurt TYPO3 User Group (FTUG) 2017.11.15
 
unit1 part 1 sem4 php.docx
unit1 part 1 sem4 php.docxunit1 part 1 sem4 php.docx
unit1 part 1 sem4 php.docx
 
Scraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHPScraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHP
 
Make the most of twig
Make the most of twigMake the most of twig
Make the most of twig
 
Chapter 08 php advance
Chapter 08   php advanceChapter 08   php advance
Chapter 08 php advance
 
Javascript Konsole für Entwicklung und Administration
Javascript Konsole für Entwicklung und AdministrationJavascript Konsole für Entwicklung und Administration
Javascript Konsole für Entwicklung und Administration
 
What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...
 
Kostiantyn Grygoriev "Wrapping C++ for Python"
Kostiantyn Grygoriev "Wrapping C++ for Python"Kostiantyn Grygoriev "Wrapping C++ for Python"
Kostiantyn Grygoriev "Wrapping C++ for Python"
 
Javascript cross domain communication
Javascript cross domain communicationJavascript cross domain communication
Javascript cross domain communication
 
APEX Behind the Scenes by Scott Spendolini
APEX Behind the Scenes by Scott SpendoliniAPEX Behind the Scenes by Scott Spendolini
APEX Behind the Scenes by Scott Spendolini
 
T3CON08 intelligent webforms with Typo3
T3CON08 intelligent webforms with Typo3T3CON08 intelligent webforms with Typo3
T3CON08 intelligent webforms with Typo3
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHP
 
Flamingo Microservice based E-Commerce / Motivations,Backgrounds, Short Intro...
Flamingo Microservice based E-Commerce / Motivations,Backgrounds, Short Intro...Flamingo Microservice based E-Commerce / Motivations,Backgrounds, Short Intro...
Flamingo Microservice based E-Commerce / Motivations,Backgrounds, Short Intro...
 
Fork CMS
Fork CMSFork CMS
Fork CMS
 
Introduction to Office Development Topics
Introduction to Office Development TopicsIntroduction to Office Development Topics
Introduction to Office Development Topics
 
POX to HATEOAS: Our Company's Journey Building a Hypermedia API
POX to HATEOAS: Our Company's Journey Building a Hypermedia APIPOX to HATEOAS: Our Company's Journey Building a Hypermedia API
POX to HATEOAS: Our Company's Journey Building a Hypermedia API
 
TYPO3 - The Enterprise Open Source CMS - Rania Marou - FOSSCOMM 2015
TYPO3 - The Enterprise Open Source CMS - Rania Marou - FOSSCOMM 2015TYPO3 - The Enterprise Open Source CMS - Rania Marou - FOSSCOMM 2015
TYPO3 - The Enterprise Open Source CMS - Rania Marou - FOSSCOMM 2015
 
Php through the eyes of a hoster: PHPNW10
Php through the eyes of a hoster: PHPNW10Php through the eyes of a hoster: PHPNW10
Php through the eyes of a hoster: PHPNW10
 
Automate Studio Training: Materials Maintenance Tips for Efficiency and Ease ...
Automate Studio Training: Materials Maintenance Tips for Efficiency and Ease ...Automate Studio Training: Materials Maintenance Tips for Efficiency and Ease ...
Automate Studio Training: Materials Maintenance Tips for Efficiency and Ease ...
 
Andrii Yatsenko "Make the most of Twig"
Andrii Yatsenko "Make the most of Twig"Andrii Yatsenko "Make the most of Twig"
Andrii Yatsenko "Make the most of Twig"
 

Recently uploaded

急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
natyesu
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Sanjeev Rampal
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
JungkooksNonexistent
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
nirahealhty
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
Rogerio Filho
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
Gal Baras
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptxInternet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
VivekSinghShekhawat2
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
laozhuseo02
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
GTProductions1
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
JeyaPerumal1
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 

Recently uploaded (20)

急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptxInternet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 

TYPO3 FormZ

  • 1. FormZ • typo3-formz.com 1github.com/romm/formz → go and ★ it! TYPO3 FormZ A modern form handler for extensions
  • 2. FormZ • typo3-formz.com 2github.com/romm/formz → go and ★ it! Romain Canon PHP developer on TYPO3 since 2012 Currently living in Paris @Rommsteinz romain.hydrocanon@gmail.com @romm
  • 3. FormZ • typo3-formz.com 3github.com/romm/formz → go and ★ it! Summary • What and why? • How? • Demo • Next?
  • 4. FormZ • typo3-formz.com 4github.com/romm/formz → go and ★ it! What is FormZ? • A TYPO3 extension (TER, Packagist, GitHub) • A strong API for building web-forms with Extbase & Fluid • Time saving tool for developers and integrators
  • 5. FormZ • typo3-formz.com 5github.com/romm/formz → go and ★ it! Why FormZ? • My customer needed a powerful and modern form manager for dozens of forms (simulations, registration, “business”, contact) • EXT:formhandler? • Old and not maintained a lot (not maintained anymore, since september 2016) • PI-based with no Fluid support • No frontend JavaScript validation • EXT:powermail? • Too “specific”
  • 6. FormZ • typo3-formz.com 6github.com/romm/formz → go and ★ it! “Eh dude, TYPO3 v8 provides a brand new form builder!” • Development of both extensions probably began at the same time No communication led to two separate projects • The new form builder is for TYPO3 8.7; we needed something for TYPO3 6.2
  • 7. FormZ • typo3-formz.com 7github.com/romm/formz → go and ★ it! “Eh dude, TYPO3 v8 provides a brand new form builder!” • Main target audience: • EXT:form → For editors/integrators → Simple forms with no complex business rules → Powerful UI to manage the basic rules of the forms • EXT:formz → For developers/integrators → Can handle huge forms with lots of business rules → Built by a developer for developers: easy to understand, maintain, evolve
  • 8. FormZ • typo3-formz.com 8github.com/romm/formz → go and ★ it! What does FormZ provide?
  • 9. FormZ • typo3-formz.com 9github.com/romm/formz → go and ★ it! TypoScript based configuration • Easy inheritance config.tx_formz { forms { RommFormzExampleFormExampleForm { fields { name { validation { required < config.tx_formz.validators.required } } email { validation { required < config.tx_formz.validators.required isEmail < config.tx_formz.validators.email } } } } } }
  • 10. FormZ • typo3-formz.com 10github.com/romm/formz → go and ★ it! TypoScript based configuration • Easy overriding config.tx_formz { forms { RommFormzExampleFormExampleForm { fields { gender { validation { required < config.tx_formz.validators.required isValid < config.tx_formz.validators.containsValues isValid { messages { default.value = Please select a correct value! } options { values { 10 = male 20 = female } } } } } } } } }
  • 11. FormZ • typo3-formz.com 11github.com/romm/formz → go and ★ it! TypoScript based configuration • Could be YAML or plain PHP (incoming!)
  • 12. FormZ • typo3-formz.com 12github.com/romm/formz → go and ★ it! Fluid templating • Build you form however you want/need, by using the full power of Fluid: partials, view helpers, conditions, etc.
  • 13. FormZ • typo3-formz.com 13github.com/romm/formz → go and ★ it! Fluid templating • Benefit from built-in view helpers: • Field layouts (native support for Twitter Bootstrap and Foundation) • Automatic CSS classes (for valid/invalid status) • More incoming!
  • 14. FormZ • typo3-formz.com 14github.com/romm/formz → go and ★ it! JavaScript frontend framework • Instant custom validation for the user (not the ugly default HTML5 browser validation)
  • 15. FormZ • typo3-formz.com 15github.com/romm/formz → go and ★ it! JavaScript frontend framework • All frontend validators have a PHP version • JavaScript is not needed for FormZ to work well! Server side validation will always run to ensure data security
  • 16. FormZ • typo3-formz.com 16github.com/romm/formz → go and ★ it! JavaScript frontend framework • You can add your own custom JavaScript validators
  • 17. FormZ • typo3-formz.com 17github.com/romm/formz → go and ★ it! Multi language • Easy translation handling Customize validation messages with TypoScript configuration name { validation { required < config.tx_formz.validators.required required.messages { default { key = example_form.error.name_required extension = formz_example } } } } firstName { validation { required < config.tx_formz.validators.required required.messages { default { key = example_form.error.first_name_required extension = formz_example } } } }
  • 18. FormZ • typo3-formz.com 18github.com/romm/formz → go and ★ it! Multi language • Available in frontend JavaScript automatically handles translated messages
  • 19. FormZ • typo3-formz.com 19github.com/romm/formz → go and ★ it! Robust condition system • Choose specific situations where fields should be activated conditionList { doesLikeIceCream { type = fieldHasValue fieldName = likeIceCream fieldValue = 1 } } fields { iceCreamFlavors { activation.expression = doesLikeIceCream } }
  • 20. FormZ • typo3-formz.com 20github.com/romm/formz → go and ★ it! Robust condition system • Choose specific situations where validation should be activated conditionList { countryIsFrance { type = fieldHasValue fieldName = country fieldValue = FR } countryIsGermany { type = fieldHasValue fieldName = country fieldValue = DE } } fields { phoneNumber { validation { frenchPhone { className = MyValidatorFrenchPhoneValidator activation.expression = countryIsFrance } germanPhone { className = MyValidatorGermanPhoneValidator activation.expression = countryIsGermany } } } }
  • 21. FormZ • typo3-formz.com 21github.com/romm/formz → go and ★ it! Robust condition system • Understands logical operations deliveryChoice { activation.expression = zipCodeValid && addressValid && (countryIsFrance || countryIsGermany) }
  • 22. FormZ • typo3-formz.com 22github.com/romm/formz → go and ★ it! Dynamic CSS data-attributes • Automatically added to the <form> HTML tag • Allows powerful CSS targeting using data-attributes • fz-value-{field-name} / fz-valid-{field-name} / fz-error-{field-name} • fz-loading • More... • Fully provided by FormZ core • Works on frontend side (JavaScript) and server side (PHP/Fluid)
  • 23. FormZ • typo3-formz.com 23github.com/romm/formz → go and ★ it! Dynamic CSS classes form[name="exForm"]:not([fz-value-email$="@typo3.org"]) .typo3-user { display: none; } Basic example: On a registration form: I want to display additional information for “official” TYPO3 users.
  • 24. FormZ • typo3-formz.com 24github.com/romm/formz → go and ★ it! Demo
  • 25. FormZ • typo3-formz.com 25github.com/romm/formz → go and ★ it! What is coming next?
  • 26. FormZ • typo3-formz.com 26github.com/romm/formz → go and ★ it! Middlewares • Between the request and the controller • A specific and powerful FormZ context • Example: pre-fill form values, add complex validation processes, save to database, send an email, etc.
  • 27. FormZ • typo3-formz.com 27github.com/romm/formz → go and ★ it! Multi-steps form • Supports separate pages • Conditional steps • Database/Session/Other persistence
  • 28. FormZ • typo3-formz.com 28github.com/romm/formz → go and ★ it! Substeps • A new concept that allows pure JavaScript/CSS step control, for an instant navigation • Check: https://goo.gl/H6TT69 (https://www.direct-energie.com/particuliers/electricite/simulateur-de-consommation)
  • 29. FormZ • typo3-formz.com 29github.com/romm/formz → go and ★ it! More information/support • Join #ext-formz on Slack! You don’t have an account? Go on forger.typo3.org/slack • typo3-formz.com Official website • typo3-formz.com/doc Documentation FR/EN PDF versions available!
  • 30. FormZ • typo3-formz.com 30github.com/romm/formz → go and ★ it! Thanks!