Sunday, January 6, 2013

Getting started with Symfony2 - Part 1

After installing Symfony 2.1 and going through the documentations, everything seems simple enough. To start developing an application from scratch, first create a project, next create a Bundle and start adding codes.

Several assumptions;
  1. Installation was done as in my previous posting, including creating the project called mysymfony.
  2. The Bundle is called HelloBundle in Sample. All Bundle names must end with the word Bundle.
  3. All Bundles will be under the vendor named "Sample".
Here are steps to create and delete a Bundle.

A. Create a Bundle
Step 1: Generate the Bundle

cd mysymfony
php app/console generate:bundle --namespace=Sample/HelloBundle --format=yml

Respond to the wizard's questions;
  1. [Enter]
  2. HelloBundle
  3. [Enter]
  4. [Enter]
  5. [Enter]
  6. [Enter]
  7. [Enter]
  8. [Enter]

Step 2: Create the routing.
Still in the symfony directory, edit the file src/Sample/HelloBundle/Resources/config/routing.yml

    pattern:  /hello/{name}
    defaults: { _controller: SampleHelloBundle:Hello:index }

Step 3: Create the controller file.

vi src/Sample/HelloBundle/Controller/HelloController.php

namespace Sample\HelloBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class HelloController extends Controller
    public function indexAction($name)
        return $this->render('SampleHelloBundle:Hello:index.html.twig', array('name' => $name));

Step 4: Create a view template

vi src/Sample/HelloBundle/Resources/views/Hello/index.html.twig

{% extends '::base.html.twig' %}
{% block body %}
Hello {{ name }}!
{% endblock %}

Step 5: Access the final application

In a web browser, enter the location or URL as



B. Delete a Bundle
Step 1: Delete the Bundle directory
rm -rf src/Sample/HelloBundle/

Step 2: Remove Bundle routing in /app/config/routing.yml
Example, delete

    resource: "@SampleHelloBundle/Resources/config/routing.yml"
    prefix:   /

Step 3: Remove Bundle from app/AppKernel.php
Example, delete

new Sample\HelloBundle\SampleHelloBundle(),

Step 4: Clear Symfony cache
php app/console cache:clear 


php app/console cache:clear --env=prod --no-debug

Note to self: No promises when Part 2 will be published.

Saturday, January 5, 2013

Installing Symfony2 on Centos 6

Symfony2 framework looks like it provide many useful development tools.

All following codes require access to internet to download the respective files.

Pre installation check list for Symfony2.1.

  1. Installed and running Apache httpd
  2. Installed php 5.3 or higher
  3. Installed GIT 1.7 or higher
Install PHP
Lots of resources available online.

Ensure additional php packages are installed, including
  • php-cli
  • php-intl
  • php-mysql (if you use MySQL database)
  • php-gd
  • php-pecl-apc
  • php-mbstring

Check that /etc/php/ini timezone is edited.
date.timezone = "Asia/Kuala_Lumpur"

Install GIT
sudo yum install git-core

Install Composer for PHP
cd /var/www/html
curl -s | php

Install Symfony2.1
Step 1: Download from and extract

tar xvzf Symfony_Standard_Vendors_2.1.6.tgz

Read the text file Symfony/

cp composer.phar Symfony

Step 2: Basic configuration

Step 3: Create your first Symfony2 project

cd /var/www/html/Symfony
php composer.phar create-project symfony/framework-standard-edition /var/www/html/mysymfony 2.1.6

  • create-project is the command to create a project with 3 arguments
  • symfony/framework-standard-edition is the framework to be installed
  • /var/www/html/mysymfony is the new directory or project name to be created and installed with base project files
  • 2.1.6 is the version
Use a web browser to check installed project at


If there is an error, please fix before continuing. I received 2 errors to fix the directory permission for app/cache and app/logs

chown -Rf apache.apache app/logs app/cache

Note: I found following discussion useful

What you should not do for your online portal

At any time if you have launched a portal accessed publicly, its a bad idea to have links showing Minta Maaf.

Just found this on the Malaysian Road Transport Department Portal on  5 Jan 2013.

If its not ready, no need to put it online, right? Just my Opinion.

The link kept directing to for most of the options I picked.

Blog Archive