15 januari 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 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!