Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Endroid Symfony Application

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

Endroid Symfony Application

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.

Avatar for Jeroen van den Enden

Jeroen van den Enden

February 05, 2014

Other Decks in Technology

Transcript

  1. • A standard for building applications • Built on symfony-standard

    • Additional out-of-the-box functionality What is it? What it is not • It is not a CMS • It does not use CMF or ODM
  2. Goals • Speed up development process ◦ application should work

    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
  3. • Build something that works (1.0.0) ◦ make concessions ◦

    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
  4. 0.1 - Symfony Standard Edition 0.2 - Admin 0.3 -

    User management 0.4 - Menus and internal links 0.5 - Entities and behaviors 0.6 - Multilanguage 0.7 - Search 0.8 - Out-of-the-box functionality 0.9 - Other tools and libraries 1.0 - Demo environment Roadmap to 1.0
  5. 0.1 - Symfony Standard Edition • Symfony Standard Edition 2.3

    ◦ 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!
  6. 0.2 - Admin • SonataDoctrineORMAdminBundle ◦ loads of features ◦

    adhere to standard functionality ◦ extend through configuration • Symfony CRUD ◦ more freedom ◦ much less out-of-the-box functionality
  7. 0.3 - User management • FOSUserBundle ◦ basic user management

    • SonataUserBundle ◦ integrate user management in sonata • EndroidUserBundle ◦ define custom entities ◦ not a vendor • Plain text passwords are plain silly ◦ ElnurBlowfishPasswordEncoderBundle
  8. 0.4 - Routing and menus • SEO URLs via sluggable

    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
  9. 0.5 - Entities and behaviors • Interfaces ◦ publishable, sluggable,

    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
  10. 0.6 - Multilanguage • I18nRoutingBundle ◦ choose between domain or

    /<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
  11. 0.7 - Search • ElasticSearch ◦ Built on Lucene ◦

    Functionally comparable to Solr ▪ Faceting (categorized filtering) ▪ Spatial search (distance based) ▪ Sharding (multiple nodes) ◦ Somewhat more lightweight ◦ Better integration in Symfony than Solr (atm) ◦ Clean separation of entity and search configuration
  12. 0.8 - Out-of-the-box functionality • Admin + users + media

    • Front end layout - Twitter Bootstrap 3.0 • Main + footer menu • Home page • Text pages • News detail + overview + pagination • Contact form • Search + results • Sitemap • Fixtures for creating dummy content
  13. 0.9 - Other tools and libraries • NetvliesFormBundle • PHPExcel

    / PHPWord • KnpSnappyBundle (PDF generation) • TinymceBundle • LadybugBundle (debugging) • KnpPaginatorBundle • DoctrineFixturesBundle • DoctrineMigrationsBundle
  14. 1.0 - Demo environment • Demonstrates all mentioned functionality •

    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
  15. • Access control • MzMailChimpBundle • Admin dashboard • Redirects

    / landing pages • FpOpenIdBundle • Automated tests • Support for ODM 1.x - Further development