Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Un CMS in 25min con Symfony CMF

1,520 views

Published on

Il Symfony CMF è maturo e ci permette di creare le basi per un content manager integrandolo direttamente in applicazioni Symfony nuove o già esistenti.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Un CMS in 25min con Symfony CMF

  1. 1. Un CMS in 25 minuti Come assemblare i componenti del Symfony CMF (e non solo) per creare qualcosa che funzioni
  2. 2. Un anno fa Un CMS in 25 ore e una vita per capire cosa ho combinato Come assemblare i componenti del Symfony CMF (e non solo) per creare qualcosa che funzioni
  3. 3. Un CMS in 30 sec SE Oggi ho capito cosa c’è dietro Come assemblare i componenti del Symfony CMF (e non solo) per creare qualcosa che funzioni
  4. 4. Cosa non è il CMF
  5. 5. Cosa è il CMF https://github.com/symfony-cmf
  6. 6. Possiamo creare cose grandi
  7. 7. … o meno
  8. 8. composer.json "require": { "symfony-cmf/symfony-cmf": "1.1.*", "jackalope/jackalope-doctrine-dbal": "1.1.*", "sonata-project/doctrine-phpcr-admin-bundle": "1.1.*", "sonata-project/doctrine-orm-admin-bundle": "~2.2", "sonata-project/media-bundle": "~2.3@dev", "tilleuls/ckeditor-sonata-media-bundle": "dev-master", "egeloen/ckeditor-bundle": “~2.0" }
  9. 9. Bundles ! • CoreBundle • RoutingBundle • MenuBundle • TreeBrowserBundle • BlockBundle ! • RoutingAutoBundle • MediaBundle • CreateBundle • SearchBundle • SeoBundle
  10. 10. Documentazione
  11. 11. Read the source Luke • ContentBundle • SimpleCmsBundle • BlogBundle
  12. 12. JCR The JSR-283 and 333 specification defines an API for a Content Repository (CR) PHPCR The PHP Content Repository Interfaces aims to provide that API in PHP
  13. 13. doctrine/ DoctrinePHPCRBundle doctrine/phpcr-odm jackalope/jackalope midgard/phpcr Doctrine PHPCR ODM implementation layer SymfonyBundle PHPCR CR JCR-like implementation
  14. 14. jackalope/jackalope-jackrabbit jackalope/jackalope-doctrine- dbal midgard has built-it transport layer jackalope/jackalope midgard/phpcr PHPCR Transport implementation Storage Jackrabbit MySQL, SQLite, Postgres MySQL, SQLite, Postgres PHPCR CR JCR-like implementation
  15. 15. Jackrabbit Derby Oracle MySQL … Filesystem
  16. 16. SfDay 2014 live webcam
  17. 17. Contents cms! contents primo tortellini lasagne tagliatelle secondo abbacchio bagnacauda casadei menu primi secondi chi-siamo ! Struttura ad albero non solo per gli “articoli” ma anche per menu, rotte, …
  18. 18. Esempio di articolo con annotazione PHPCR
  19. 19. Find e remove di documenti
  20. 20. Routing
  21. 21. Routing cmf_routing:" chain:" routers_by_id:" router.default: 200" cmf_routing.dynamic_router: 100"
  22. 22. Routing cmf_routing:" dynamic:" generic_controller:oln.content.controller:contentAction" controllers_by_type:" pippo: ideato.controller:indexAction" controllers_by_class:" IdeatoMyBundleDocumentCategory:" " " " content.controller:categoryAction" IdeatoMyBundleDocumentArticle:" " " " content.controller:articleAction" templates_by_class:" IdeatoMyBundleDocumentPage:" " " " " IdeatoMyBundle:Default:content.html.twig
  23. 23. Menù • Menu e MenuNode • possono essere collegati a documenti • possono essere delle rotte di sf (comprese di parametri) • possono essere dei link verso URI
  24. 24. Menù $menusRoot = $manager->find(null, “/cms/menus");" $menu = new Menu();" $menu->setPosition($menusRoot, "main");" $manager->persist($menu);" ! $doc = $manager->find(null, “/cms/contents/mydoc“);" $menuNode = new MenuNode();" $menuNode->setPosition($menu, $doc->getName());" $menuNode->setLabel($doc->getTitle());" $menuNode->setContent($doc);" $manager->persist($menu);" $manager->flush();
  25. 25. …e il backend?
  26. 26. Concludendo • CMF è maturo • tanti piccoli componenti riutilizzabili • è possibile inserirlo su progetti Sf2 già realizzati • documentazione • ideato lo utilizza su progetti reali • viene utilizzato da eZPublish, Drupal 8, …
  27. 27. Grazie!
  28. 28. Manuel Baldassarri! Partner & COO at Ideato ! Twitter K3a eMail mb@ideato.it https://joind.in/talk/view/12213
  29. 29. • https://www.flickr.com/photos/clarkwestfield/ 2176617708 • https://www.flickr.com/photos/rodrigogalindez/ 4637637337

×