15 January 2016

Beginning with Sonata Project

Sonata Project is a bundle collection for Symfony to basically make your day-to-day CRUD programming tasks easier. Hooking up your precious doctrine orm models with a backend interface has never been easier!

So let's get started! We are going to build a portfolio system with tags and clients ORM attached to it. First we set up our Symfony project from scratch by running composer:

composer create-projects symfony/framework-standard-edition my_portfolio "2.8.*"

If your setup asks a password for mysql, use root for user and root for password. That way, you can quickly start in Vagrant using your application.

Your project will look like this:


You can use xamp or any lamp stack on your local pc, but Vagrant is a better solution for this. A simple Vagrant file setup like this can be used to quickly get a lamp stack.

Next step is adding the minimum required Sonata bundles: 

composer require knplabs/knp-menu-bundle dev-master --no-update
composer require sonata-project/admin-bundle dev-master --no-update 
composer require sonata-project/block-bundle dev-master --no-update 
composer require sonata-project/core-bundle dev-master --no-update 
composer require sonata-project/datagrid-bundle dev-master --no-update 
composer require sonata-project/doctrine-orm-admin-bundle dev-master --no-update 
composer require sonata-project/easy-extends-bundle dev-master --no-update 
composer update

The vendor map is now updated and you can add the bundles to the appkernel. Add the following lines:

Next step is to configure the application for Sonata with the minimum configuration.

Start by creating this structure in your app folder:


In your config.yml you adjust the imports lines as follows:

    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }
    - { resource: sonata/block.yml }
    - { resource: sonata/admin.yml }

We also need to enable the translator of Symfony which is turned off by default in the configuration, uncomment and make the configuration look like this:

    locale: en

    #esi:             ~
    translator:      { fallbacks: ["%locale%"] }

Then we add the following configuration to sonata/block.yml:

    default_contexts: [sonata_page_bundle]
            contexts:   [admin]

Next, we need to create the admin route. Add the following line to your app/config/routing.yml:

    resource: "@SonataAdminBundle/Resources/config/routing/sonata_admin.xml"
    prefix: /admin
    resource: .
    type: sonata_admin
    prefix: /admin

Sonata needs assets for the admin, so run the following commands:

php app/console cache:clear
php app/console assets:install
Congratulations, you are now set and done. Sonata is installed with the least options!

You can now surf to http://dev.myportfolio.com/admin and you will go to the Sonata dashboard without authentication.


In our next blogpost about Sonata we are going to configure the orm admin in depth. So stay tuned!