Standard project for building web applications, built on symfony-standard and extended with stable and actively maintained libraries, out-of-the-box components and a demo environment showing a fully working sample project.
out-of-the-box ◦ provide default optional functionality • Improve maintainability ◦ minimize self-built code ◦ build on stable and actively maintained libraries • Stimulate code reuse ◦ building blocks are decoupled ◦ add new features to demo • Manage expectations ◦ demo environment and light documentation
accept that it not perfect ◦ fulfill only basic needs • Polish and extend (1.x) ◦ fix bugs and write tests ◦ improve performance and quality ◦ turn high quality reusable code into vendor ▪ afterwards to avoid cumbersome work How to get there
◦ LTS : supported until May 2016 • Remove Acme* • Configuration changes ◦ Enable ESI ◦ Enable APC ◦ Enable CSS and JS compression • Result ◦ 404 - No route found for “GET /” ◦ Ready to go!
• SonataUserBundle ◦ integrate user management in sonata • EndroidUserBundle ◦ define custom entities ◦ not a vendor • Plain text passwords are plain silly ◦ ElnurBlowfishPasswordEncoderBundle
behavior ◦ no landing pages or alternative URLs yet • No direct mapping of entities to routes • Route collector / provider mechanism ◦ bundles implement route provider ◦ collector aggregates routes ▪ enables internal linking and menu building • KnpMenuBundle ◦ builds the menus from menu items • Works but needs improvement
sortable, timestampable, translatable, traversable etc. • Listeners to effectuate behaviors • Sonata Admin extensions • ORM Filters (switch on/off) • Combining behaviors ◦ multiple inheritance is impossible ◦ traits can be used to implement multiple behaviors ▪ disadvantage: requires PHP 5.4 ▪ PHP 5.3 => just copy trait code over and over
/<lang> as base ◦ alternative routes per locale: /search, /zoeken ◦ language switch (via _locale parameter) • Entity uses translatable behavior ◦ TranslatableInterface / TranslationInterface ◦ you decide which fields are translatable • Translatable admin extension ◦ linked via configuration • Language switch ◦ entities need extra template logic at the moment
Deployment ◦ code update and data reset every night • Open to public ◦ including admin area ◦ free testing audience ◦ stimulates (re)use and contributions • Whereabouts ◦ symfony-application.endroid.nl ◦ admin: /admin/dashboard (admin / admin) ◦ source: github.com/endroid/symfony-application.git