SlideShare une entreprise Scribd logo
1  sur  30
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!

Contenu connexe

Similaire à 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.15ManuelSelbach
 
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 PHPPaul Redmond
 
Chapter 08 php advance
Chapter 08   php advanceChapter 08   php advance
Chapter 08 php advanceDhani 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 AdministrationAlfresco 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 communicationChenKuo 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 Typo3Rogier Hosman
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHPEric 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
 
Introduction to Office Development Topics
Introduction to Office Development TopicsIntroduction to Office Development Topics
Introduction to Office Development TopicsHaaron 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 APILuke 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 2015Rania 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: PHPNW10Combell 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
 

Similaire à 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"
 

Dernier

Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...tanu pandey
 
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...roncy bisnoi
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...kajalverma014
 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"growthgrids
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...tanu pandey
 
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls DubaiDubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubaikojalkojal131
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...singhpriety023
 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...SUHANI PANDEY
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceDelhi Call girls
 
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...SUHANI PANDEY
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查ydyuyu
 
Microsoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftMicrosoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftAanSulistiyo
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...SUHANI PANDEY
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge GraphsEleniIlkou
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLimonikaupta
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC
 

Dernier (20)

Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
 
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
 
📱Dehradun Call Girls Service 📱☎️ +91'905,3900,678 ☎️📱 Call Girls In Dehradun 📱
📱Dehradun Call Girls Service 📱☎️ +91'905,3900,678 ☎️📱 Call Girls In Dehradun 📱📱Dehradun Call Girls Service 📱☎️ +91'905,3900,678 ☎️📱 Call Girls In Dehradun 📱
📱Dehradun Call Girls Service 📱☎️ +91'905,3900,678 ☎️📱 Call Girls In Dehradun 📱
 
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls DubaiDubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
 
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
 
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
Microsoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftMicrosoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck Microsoft
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
 

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!