Presentation slides of the TYPO3 Conference 2011 talk "Lazy Development using the Extension Builder". Find an abstract at: http://t3con11-frankfurt.typo3.org/sessions/acceptedpapers/paper/lazy_development_using_the_extension_builder.html
T3CON11: Lazy Development using the Extension Builder
1. Lazy Development using
the Extension Builder
Image by Diego FL (burtonez) http://www.flickr.com/photos/burtonez/273321136/in/photostream/
Nico de Haën, Steffen Müller
http://t3con11-frankfurt.typo3.org/sessions/acceptedpapers/paper/lazy_development_using_the_extension_builder.html
2. About us
Nico de Haën Steffen Müller
TYPO3 Developer Software Developer
ndh-websolutions.de /gebrüderheitz Gbr
(Freelancer)
Extension Builder Extension Builder
Project Leader Project Member
#T3CON11 Lazy Development using the Extension Builder
3. Are you...
✗ developing TYPO3 extensions?
✗ developing Extbase/Fluid extensions?
✗ developing FLOW3/Fluid packages?
✗ using git/svn?
✗ facing continuously changing requirements?
✗ practicing Domain Driven Design?
✗ using the Extension Builder?
✗ using the Editing Mode (aka Roundtrip)?
#T3CON11 Lazy Development using the Extension Builder
4. Domain Driven Design
✗ Domain: What's your Business about
✗ Context: Understanding the Domain
✗ Domain Model: Describing the Domain
✗ Communication: Ubiquitous Language
✗ Evolution: Iterative Process
✗ Building Blocks: Entities, Aggregate, Value Objects, ...
#T3CON11 Lazy Development using the Extension Builder
5. What does the Extension Builder do?
✗ Configuring Extension Properties
✗ Creating FE Plugins and BE Modules
✗ Modeling the Domain
✗ Remodeling the Domain
✗ Creating Source Code
✗ Working for you hard, while you are lazy
#T3CON11 Lazy Development using the Extension Builder
7. Extension Properties
✗ Name, Description, ...
✗ Category, Version, ...
✗ Author
#T3CON11 Lazy Development using the Extension Builder
8. Extension Properties
✗ Frontend Plugins
✗ Backend Modules
#T3CON11 Lazy Development using the Extension Builder
9. Modeling your Domain
Basic Functions of Modeler:
✗ Create Domain Objects
✗ Configure Domain Object Settings
✗ Add Properties to Domain Object
✗ Add Relations from a Domain Object to another
✗ Configure Relations
✗ Add Controller Actions
#T3CON11 Lazy Development using the Extension Builder
10. Modeling your Domain
The Modeler
#T3CON11 Lazy Development using the Extension Builder
11. Modeling your Domain
Add Blog Model
#T3CON11 Lazy Development using the Extension Builder
12. Modeling your Domain
Domain Object settings
#T3CON11 Lazy Development using the Extension Builder
13. Modeling your Domain
Controller Actions
#T3CON11 Lazy Development using the Extension Builder
14. Modeling your Domain
Model Properties
#T3CON11 Lazy Development using the Extension Builder
15. Modeling your Domain
Add Author Model
#T3CON11 Lazy Development using the Extension Builder
16. Modeling your Domain
Add Relation: Blog - Author
#T3CON11 Lazy Development using the Extension Builder
17. Modeling your Domain
Configure Relation
#T3CON11 Lazy Development using the Extension Builder
18. Modeling your Domain
Add Post Model
#T3CON11 Lazy Development using the Extension Builder
19. Modeling your Domain
Add Properties
#T3CON11 Lazy Development using the Extension Builder
20. Modeling your Domain
Add Relation: Blog - Post
#T3CON11 Lazy Development using the Extension Builder
21. Modeling your Domain
Add Tag Model
#T3CON11 Lazy Development using the Extension Builder
22. Modeling your Domain
Add Relation Post - Tag
#T3CON11 Lazy Development using the Extension Builder
23. Modeling your Domain
Add Comment Model
#T3CON11 Lazy Development using the Extension Builder
24. Modeling your Domain
Add Relation Post - Comment
#T3CON11 Lazy Development using the Extension Builder
25. Modeling your Domain
A good reason to ask
your boss for a bigger
screen!
#T3CON11 Lazy Development using the Extension Builder
26. What has been built?
Result 1:
Directories and files created
#T3CON11 Lazy Development using the Extension Builder
27. What has been built?
Result 2: Records in the Backend
#T3CON11 Lazy Development using the Extension Builder
28. What has been built?
Result 3:
Editing records
#T3CON11 Lazy Development using the Extension Builder
29. What has been built?
Result 4:
Frontend Output
#T3CON11 Lazy Development using the Extension Builder
30. That's it !
That's it ?
#T3CON11 Lazy Development using the Extension Builder
31. Edit Mode
Why to change the model?
Communication problems...
The Business Model changes...
Remember the tree swing comic?
#T3CON11 Lazy Development using the Extension Builder
32. Edit Mode
If the model changes...
You have to:
Rename Domain Objects
Add Domain Objects
Rename properties
Add or remove properties
Change relations
#T3CON11 Lazy Development using the Extension Builder
33. Blog Channel
Classes/Controller/ BlogController.php
Domain Logic Classes/Domain/Model/ Blog.php
Classes/Domain/Repository/ BlogRepository.php
Persistence ext_tables.sql
Resources/Private/Templates/Blog/ Show.html
Resources/Private/Templates/Blog/ List.html
View Resources/Private/Partials/Blog/ Properties.html
Resources/Private/Partials/Blog/ FormElements.html
Resources/Private/Languages/ locallang_db.xml
Configuration/TCA/ Blog.php
Configuration ext_tables.php
#T3CON11 Lazy Development using the Extension Builder
34. Edit Mode
Class Parser
Roundtrip Service
Code Generator
#T3CON11 Lazy Development using the Extension Builder
35. Edit Mode
/**
* Returns the name
* @return string $name
*/
public function getName() {
if (strpos('',$this>name)){
return str_replace('',' ',$this>name);
} else {
return $this>name;
}
}
/**
* Returns the title
* @return string title
*/
public function getTitle() {
if (strpos('',$this>title)){
return str_replace('',' ',$this>title);
} else {
return $this>title;
}
}
#T3CON11 Lazy Development using the Extension Builder
37. Limitations
✗ Configuration
✗ Mapping
✗ Does NOT support the traditional CSV lists like in
ancient times (and will never)
✗ Inheritence
✗ General TCA limitations
✗ ...
#T3CON11 Lazy Development using the Extension Builder
38. Roadmap
Current 2.x branch
✗ Configure (Non-) Cacheable Controller Actions
✗ Configure Switchable Controller Actions
✗ Mapping to existing tables
✗ Services
✗ Content Elements
#T3CON11 Lazy Development using the Extension Builder
39. Roadmap
Future 3.x branch
✗ Complete new GUI (ExtJS, Oryx)
✗ Extend existing models in the modeler
✗ Make all TCA options configurable
✗ Import models from other extensions
✗ Import models from other formats (XLS, RDF etc.)
✗ Generate FLOW3 packages
#T3CON11 Lazy Development using the Extension Builder
40. Summary
Why use the Extension Builder?
✗ Be lazy! Don't repeat yourself
✗ Supports Domain Driven Design
✗ Adapt your model anytime
✗ Cleaner code (CGL)
✗ Modeler visualizes models and relations
#T3CON11 Lazy Development using the Extension Builder
41. Want to join the project?
✗ Download and use the Extension Builder:
http://typo3.org/extensions/repository/view/extension_builder/current/
✗ Give Feedback
✗ Report bugs
✗ Sponsoring? Talk to us!
✗ Join the project team at Forge:
http://forge.typo3.org/projects/show/extension-extension_builder
#T3CON11 Lazy Development using the Extension Builder
42. #T3CON11
?
Questions?
Lazy Development using the Extension Builder
43. Thank you
Nico de Haën
Mail: typo3@ndh-websolutions.de
Twitter: @t3ndh
Web: www.ndh-websolutions.de
Steffen Müller
Mail: typo3@t3node.com
Twitter: @t3node
Blog: www.t3node.com
#T3CON11 Lazy Development using the Extension Builder