際際滷

際際滷Share a Scribd company logo
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
Un CMS in 25min con Symfony CMF
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?
Un CMS in 25min con Symfony CMF
Un CMS in 25min con Symfony CMF
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,
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

More Related Content

Un CMS in 25min con Symfony CMF

  • 1. Un CMS in 25 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 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. Cosa non 竪 il CMF
  • 5. Cosa 竪 il CMF https://github.com/symfony-cmf
  • 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
  • 12. Read the source Luke ContentBundle SimpleCmsBundle BlogBundle
  • 13. 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
  • 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. SfDay 2014 live webcam
  • 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 articolo con annotazione PHPCR
  • 20. Find e remove di documenti
  • 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湛 Menu e 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();
  • 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,
  • 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