Page 1
Lazy Development using the Extension Builder
Nico de Haën, Steffen Müller
Image by Diego FL (burtonez) http://www.flickr.com/photos/burtonez/273321136/in/photostream/
http://t3con11-frankfurt.typo3.org/sessions/acceptedpapers/paper/lazy_development_using_the_extension_builder.html
Page 2
#T3CON11
About us
Lazy Development using the Extension Builder
Nico de Haën Steffen Müller
TYPO3 Developerndh-websolutions.de(Freelancer)
Software Developer/gebrüderheitz Gbr
Extension Builder Project Leader
Extension Builder Project Member
Page 3
#T3CON11
Are you...
✗ developing TYPO3 extensions?
Lazy Development using the Extension Builder
✗ 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)?
Page 4
#T3CON11
Domain Driven Design
✗ Domain: What's your Business about
Lazy Development using the Extension Builder
✗ Context: Understanding the Domain
✗ Domain Model: Describing the Domain
✗ Communication: Ubiquitous Language
✗ Evolution: Iterative Process
✗ Building Blocks: Entities, Aggregate, Value Objects, ...
Page 5
#T3CON11
What does the Extension Builder do?
Lazy Development using the Extension Builder
✗ 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
Page 6
#T3CON11
GUI Overview
Lazy Development using the Extension Builder
Extension ModelerExtension Properties
Page 7
#T3CON11
Extension Properties
Lazy Development using the Extension Builder
✗ Name, Description, ...✗ Category, Version, ...✗ Author
Page 8
#T3CON11
Extension Properties
Lazy Development using the Extension Builder
✗ Frontend Plugins✗ Backend Modules
Page 9
#T3CON11
Modeling your Domain
Basic Functions of Modeler:
Lazy Development using the Extension Builder
✗ 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
Page 10
#T3CON11 Lazy Development using the Extension Builder
The Modeler
Modeling your Domain
Page 11
#T3CON11 Lazy Development using the Extension Builder
Add Blog Model
Modeling your Domain
Page 12
#T3CON11 Lazy Development using the Extension Builder
Domain Object settings
Modeling your Domain
Page 13
#T3CON11 Lazy Development using the Extension Builder
Controller Actions
Modeling your Domain
Page 14
#T3CON11 Lazy Development using the Extension Builder
Model Properties
Modeling your Domain
Page 15
#T3CON11 Lazy Development using the Extension Builder
Add Author Model
Modeling your Domain
Page 16
#T3CON11 Lazy Development using the Extension Builder
Add Relation: Blog - Author
Modeling your Domain
Page 17
#T3CON11 Lazy Development using the Extension Builder
Configure Relation
Modeling your Domain
Page 18
#T3CON11 Lazy Development using the Extension Builder
Add Post Model
Modeling your Domain
Page 19
#T3CON11 Lazy Development using the Extension Builder
Add Properties
Modeling your Domain
Page 20
#T3CON11 Lazy Development using the Extension Builder
Add Relation: Blog - Post
Modeling your Domain
Page 21
#T3CON11 Lazy Development using the Extension Builder
Add Tag Model
Modeling your Domain
Page 22
#T3CON11 Lazy Development using the Extension Builder
Add Relation Post - Tag
Modeling your Domain
Page 23
#T3CON11 Lazy Development using the Extension Builder
Add Comment Model
Modeling your Domain
Page 24
#T3CON11 Lazy Development using the Extension Builder
Add Relation Post - Comment
Modeling your Domain
Page 25
#T3CON11 Lazy Development using the Extension Builder
A good reason to ask your boss for a bigger screen!
Modeling your Domain
Page 26
#T3CON11
What has been built?
Lazy Development using the Extension Builder
Result 1:
Directories and files created
Page 27
#T3CON11
What has been built?
Lazy Development using the Extension Builder
Result 2: Records in the Backend
Page 28
#T3CON11
What has been built?
Lazy Development using the Extension Builder
Result 3:
Editing records
Page 29
#T3CON11
What has been built?
Lazy Development using the Extension Builder
Result 4:
Frontend Output
Page 30
#T3CON11
That's it
Lazy Development using the Extension Builder
!
?
That's it
Page 31
Communication problems...
Why to change the model?
#T3CON11 Lazy Development using the Extension Builder
Edit Mode
The Business Model changes...
Remember the tree swing comic?
Page 32
If the model changes...
Rename Domain Objects
Add Domain Objects
Change relations
Rename properties
Add or remove properties
You have to:
#T3CON11 Lazy Development using the Extension Builder
Edit Mode
Page 33
ChannelBlog
Classes/Controller/ BlogController .phpClasses/Domain/Model/ Blog.php
Classes/Domain/Repository/ BlogRepository.php
Resources/Private/Templates/Blog/ Show.html
Resources/Private/Templates/Blog/ List .html
Resources/Private/Partials/Blog/ Properties.html
Resources/Private/Partials/Blog/ FormElements.html
Resources/Private/Languages/ locallang_db.xml
Configuration/TCA/ Blog.php
ext_tables.php
ext_tables.sql
Domain Logic
Persistence
Configuration
View
#T3CON11 Lazy Development using the Extension Builder
Page 34
#T3CON11 Lazy Development using the Extension Builder
Class Parser
Roundtrip Service
Code Generator
Edit Mode
Page 35
/** * 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
Edit Mode
Page 36
Classes: Controller: merge Domain: Model: merge Repository: merge
Configuration: TCA: merge TypoScript: keep
Resources: Private: Language: locallang.xml: merge Templates: keep Layouts: skip
ext_localconf.php: merge ext_tables.php: merge ext_tables.sql: merge
Configuration/ExtensionBuilder/settings.yaml
#T3CON11 Lazy Development using the Extension Builder
Configure overwrite settings in:
Edit Mode
Page 37
#T3CON11
Limitations
✗ Configuration
Lazy Development using the Extension Builder
✗ Mapping
✗ Does NOT support the traditional CSV lists like in ancient times (and will never)
✗ Inheritence
✗ General TCA limitations
✗ ...
Page 38
#T3CON11
Roadmap
Current 2.x branch
Lazy Development using the Extension Builder
✗ Configure (Non-) Cacheable Controller Actions
✗ Configure Switchable Controller Actions
✗ Mapping to existing tables
✗ Services
✗ Content Elements
Page 39
#T3CON11
Roadmap
Future 3.x branch
Lazy Development using the Extension Builder
✗ 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
✗ Complete new GUI (ExtJS, Oryx)
Page 40
#T3CON11
Summary
Why use the Extension Builder?
Lazy Development using 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
Page 41
#T3CON11
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
Lazy Development using the Extension Builder
Page 42
#T3CON11
?Questions?
Lazy Development using the Extension Builder
Page 43
#T3CON11
Thank you
Nico de HaënMail: [email protected]
Twitter: @t3ndh
Web: www.ndh-websolutions.de
Steffen MüllerMail: [email protected]
Twitter: @t3node
Blog: www.t3node.com
Lazy Development using the Extension Builder