Sonata Project Presentation

A tour of the Sonata Project

Thomas Rabaix

Ekino

A bit of history

Some numbers

More than 500 Contributors

Do you need Sonata ?

Website's requirements

media, cdn, blog, sitemap, seo, smo, wysiwyg, localisation, currency, user management , admin, export, cache, http caching, extensibility, page, performance, payment, basket, block, async, aws, youtube, vimeo, audit, tag, collection, category, widget, invoice, delivery, order, csv, xls, twitter, facebook, authentication, multisite, timeline, analytics, acl, roles, group, memcached, redis, api [still counting ...]

Sonata Project's Bundles

Site custom

Backend Application

Symfony CMF

Standard Website

Ecommerce

AdminBundle

AdminBundle

Modal edition

Filters on top

List: table or mosaic

DatePicker & Auto Complete

Tabs and Groups

Integrates AdminLTE Features

[WIP] Responsive Web Design

make test: Unit Test and Documentation Check

BlockBundle

BlockBundle

http://sonata-project.org/blog/2014/3/19/sonata-block-bundle-sfpot-march-2014

Block call

# layout.html.twig
{{ sonata_block_render({'type': 'sonata.product.block.similar_products'},  {
    'number': 4,
    'base_product_id': single_basket_element.productId
}) }}

PageBundle

PageBundle

Compose your page with blocks

Move blocks around

Templates configuration

# https://github.com/sonata-project/sandbox/blob/f6264c2/app/config/sonata/sonata_page.yml#L50-L78
path: 'ApplicationSonataPageBundle::demo_layout.html.twig'
name: 'default'
containers:
     header: { name: Header }
     content_top: {name: Top content }
     content: { name: Main content }
     content_bottom: { name: Bottom content }
     footer: {name: Footer }
matrix:
     layout: |
         HHHHHHHH
         TTTTTTTT
         CCCCCCCC
         BBBBBBBB
         FFFFFFFF
     mapping:
         H: header
         T: content_top
         C: content
         B: content_bottom
         F: footer

Front Editor Bar

Other PageBundle's Features

MediaBundle

MediaBundle

Folder organisation

Add media

Edit metadata information

Edit image with Pixlr

Ecommerce

Sonata Ecommerce

One provider control one product type

Add to basket

Checkout Process

Ecommerce Dashboard

API

RESTFul API (WIP)

Sonata RESTFul API

Starting Point

Quick install

curl -s http://getcomposer.org/installer | php
php composer.phar create-project sonata-project/sandbox:2.3.x-dev
php bin/load_data.php

Tweak: Add/Remove features

AppKernel.php

<?php
new Sonata\CoreBundle\SonataCoreBundle(),
new Sonata\IntlBundle\SonataIntlBundle(),
new Sonata\FormatterBundle\SonataFormatterBundle(),

app/config.yml

imports:
    - { resource: sonata/sonata_formatter.yml }
    - { resource: sonata/sonata_intl.yml }
    - { resource: sonata/sonata_core.yml }

composer.json

{
    "sonata-project/intl-bundle": "~2.2",
    "sonata-project/core-bundle": "~2.2",
    "sonata-project/formatter-bundle": "~2.3",
}

Sandbox's extras

How to contribute ?

Questions ?