Un CMS in 25 minuti Come assemblare i componenti del Symfony CMF (e non solo) per creare qualcosa che funzioni
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
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
Cosa non è il CMF
Cosa è il CMF https://github.com/symfony-cmf
Possiamo creare cose grandi
… o meno
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" }
Bundles ! • CoreBundle • RoutingBundle • MenuBundle • TreeBrowserBundle • BlockBundle ! • RoutingAutoBundle • MediaBundle • CreateBundle • SearchBundle • SeoBundle
Documentazione
Read the source Luke • ContentBundle • SimpleCmsBundle • BlogBundle
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
doctrine/ DoctrinePHPCRBundle doctrine/phpcr-odm jackalope/jackalope midgard/phpcr Doctrine PHPCR ODM implementation layer SymfonyBundle PHPCR CR JCR-like implementation
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
Jackrabbit Derby Oracle MySQL … Filesystem
SfDay 2014 live webcam
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, …
Esempio di articolo con annotazione PHPCR
Find e remove di documenti
Routing
Routing cmf_routing:" chain:" routers_by_id:" router.default: 200" cmf_routing.dynamic_router: 100"
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
Menù • Menu e MenuNode • possono essere collegati a documenti • possono essere delle rotte di sf (comprese di parametri) • possono essere dei link verso URI
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();
…e il backend?
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, …
Grazie!
Manuel Baldassarri! Partner & COO at Ideato ! Twitter K3a eMail mb@ideato.it https://joind.in/talk/view/12213
• https://www.flickr.com/photos/clarkwestfield/ 2176617708 • https://www.flickr.com/photos/rodrigogalindez/ 4637637337

Un CMS in 25min con Symfony CMF

  • 1.
    Un CMS in25 minuti Come assemblare i componenti del Symfony CMF (e non solo) per creare qualcosa che funzioni
  • 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.
    Un CMS in30 sec SE Oggi ho capito cosa c’è dietro Come assemblare i componenti del Symfony CMF (e non solo) per creare qualcosa che funzioni
  • 4.
  • 5.
    Cosa è ilCMF https://github.com/symfony-cmf
  • 6.
  • 7.
  • 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.
    Bundles ! •CoreBundle • RoutingBundle • MenuBundle • TreeBrowserBundle • BlockBundle ! • RoutingAutoBundle • MediaBundle • CreateBundle • SearchBundle • SeoBundle
  • 10.
  • 12.
    Read the sourceLuke • ContentBundle • SimpleCmsBundle • BlogBundle
  • 13.
    JCR The JSR-283and 333 specification defines an API for a Content Repository (CR) PHPCR The PHP Content Repository Interfaces aims to provide that API in PHP
  • 14.
    doctrine/ DoctrinePHPCRBundle doctrine/phpcr-odm jackalope/jackalope midgard/phpcr Doctrine PHPCR ODM implementation layer SymfonyBundle PHPCR CR JCR-like implementation
  • 15.
    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
  • 16.
    Jackrabbit Derby Oracle MySQL … Filesystem
  • 17.
  • 18.
    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, …
  • 19.
    Esempio di articolocon annotazione PHPCR
  • 20.
    Find e removedi documenti
  • 21.
  • 22.
    Routing cmf_routing:" chain:" routers_by_id:" router.default: 200" cmf_routing.dynamic_router: 100"
  • 23.
    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
  • 24.
    Menù • Menue MenuNode • possono essere collegati a documenti • possono essere delle rotte di sf (comprese di parametri) • possono essere dei link verso URI
  • 25.
    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();
  • 26.
  • 30.
    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, …
  • 31.
  • 32.
    Manuel Baldassarri! Partner& COO at Ideato ! Twitter K3a eMail mb@ideato.it https://joind.in/talk/view/12213
  • 33.
    • https://www.flickr.com/photos/clarkwestfield/ 2176617708 • https://www.flickr.com/photos/rodrigogalindez/ 4637637337