un cms in 25min con symfony cmf

33
Un CMS in 25 minuti Come assemblare i componenti del Symfony CMF (e non solo) per creare qualcosa che funzioni

Upload: manuel-baldassarri

Post on 01-Jul-2015

440 views

Category:

Software


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Un CMS in 25min con Symfony CMF

Un CMS in 25 minutiCome assemblare i componenti del Symfony CMF

(e non solo) per creare qualcosa che funzioni

Page 2: Un CMS in 25min con Symfony CMF

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 anno fa

Page 3: Un CMS in 25min con Symfony CMF

Un CMS in 30 sec SE

ho capito cosa c’è dietroCome assemblare i componenti del Symfony CMF

(e non solo) per creare qualcosa che funzioni

Oggi

Page 4: Un CMS in 25min con Symfony CMF

Cosa non è il CMF

Page 5: Un CMS in 25min con Symfony CMF

https://github.com/symfony-cmf

Cosa è il CMF

Page 6: Un CMS in 25min con Symfony CMF

Possiamo creare cose grandi

Page 7: Un CMS in 25min con Symfony CMF

… o meno

Page 8: Un CMS in 25min con Symfony CMF

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" }

Page 9: Un CMS in 25min con Symfony CMF

Bundles!

• CoreBundle

• RoutingBundle

• MenuBundle

• TreeBrowserBundle

• BlockBundle

!

• RoutingAutoBundle

• MediaBundle

• CreateBundle

• SearchBundle

• SeoBundle

Page 10: Un CMS in 25min con Symfony CMF

Documentazione

Page 11: Un CMS in 25min con Symfony CMF
Page 12: Un CMS in 25min con Symfony CMF

Read the source Luke

• ContentBundle

• SimpleCmsBundle

• BlogBundle

Page 13: Un CMS in 25min con Symfony CMF

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

Page 14: Un CMS in 25min con Symfony CMF

doctrine/DoctrinePHPCRBundle doctrine/phpcr-odm

jackalope/jackalope

midgard/phpcr

Doctrine PHPCR ODM implementation layerSymfonyBundle

PHPCR CR JCR-like

implementation

Page 15: Un CMS in 25min con Symfony CMF

jackalope/jackalope-jackrabbit

jackalope/jackalope-doctrine-dbal

midgard has built-it transport layer

jackalope/jackalope

midgard/phpcr

PHPCR Transport implementation

Jackrabbit

MySQL, SQLite, Postgres

Storage

MySQL, SQLite, Postgres

PHPCR CR JCR-like

implementation

Page 16: Un CMS in 25min con Symfony CMF

Jackrabbit

Derby

Oracle

Filesystem

MySQL

Page 17: Un CMS in 25min con Symfony CMF

SfDay 2014 live webcam

Page 18: Un CMS in 25min con Symfony CMF

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, …

Page 19: Un CMS in 25min con Symfony CMF

Esempio di articolo con annotazione PHPCR

Page 20: Un CMS in 25min con Symfony CMF

Find e remove di documenti

Page 21: Un CMS in 25min con Symfony CMF

Routing

Page 22: Un CMS in 25min con Symfony CMF

Routing

cmf_routing:"

chain:"

routers_by_id:"

router.default: 200"

cmf_routing.dynamic_router: 100"

Page 23: Un CMS in 25min con Symfony CMF

Routingcmf_routing:" dynamic:" generic_controller:oln.content.controller:contentAction" controllers_by_type:" pippo: ideato.controller:indexAction" controllers_by_class:" Ideato\MyBundle\Document\Category:"" " " content.controller:categoryAction" Ideato\MyBundle\Document\Article:"" " " content.controller:articleAction" templates_by_class:" Ideato\MyBundle\Document\Page:"" " " " IdeatoMyBundle:Default:content.html.twig

Page 24: Un CMS in 25min con Symfony CMF

Menù

• Menu e MenuNode

• possono essere collegati a documenti

• possono essere delle rotte di sf (comprese di parametri)

• possono essere dei link verso URI

Page 25: Un CMS in 25min con Symfony CMF

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();

Page 26: Un CMS in 25min con Symfony CMF

…e il backend?

Page 27: Un CMS in 25min con Symfony CMF
Page 28: Un CMS in 25min con Symfony CMF
Page 29: Un CMS in 25min con Symfony CMF
Page 30: Un CMS in 25min con Symfony CMF

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, …

Page 31: Un CMS in 25min con Symfony CMF

Grazie!

Page 32: Un CMS in 25min con Symfony CMF

https://joind.in/talk/view/12213

Manuel Baldassarri!Partner & COO at Ideato

!

Twitter K3a eMail [email protected]

Page 33: Un CMS in 25min con Symfony CMF

• https://www.flickr.com/photos/clarkwestfield/2176617708

• https://www.flickr.com/photos/rodrigogalindez/4637637337