Un CMS in 25min con Symfony CMF

Post on 01-Jul-2015

442 views 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 of 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

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

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

Cosa non è il CMF

https://github.com/symfony-cmf

Cosa è il 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 layerSymfonyBundle

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

Jackrabbit

MySQL, SQLite, Postgres

Storage

MySQL, SQLite, Postgres

PHPCR CR JCR-like

implementation

Jackrabbit

Derby

Oracle

Filesystem

MySQL

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"

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

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!

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

Manuel Baldassarri!Partner & COO at Ideato

!

Twitter K3a eMail mb@ideato.it

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

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