WHAT'S NEW?
Loading...

Database operation using Form in Symfony


This post help to create form used  in database operations like insertion,deletion,modification etc. in symfony. Symfony is one of the best framework used to develop web application provides great security and code redundancy. In this post we will learn how to create form in symphony. In PHP we simply create form using html and sent data to sql operation sung POST or GET. But in Symfony, we will use form element for this purpose.

STEP-1 
 First of all create symfony application and configure it with database etc. Then we will generate Bundle using below commend in which Bundle Name is `loginBundle`
cd [app. path]
Php app/console generate: bundle LoginBundle

STEP-2
Map MySQL database and create entity using below commends.
Php app/console doctrine:mapping:import LoginBundle
Php app/console doctrine:generate:entities LoginBundle

Our Login.php file at source/LoginBundle/Resources/Entity/Login.php will look like

namespace Sym\FormBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
 * TblCust
 */
class TblCust
{
    /**
     * @var string
     */
    private $custName;

    /**
     * @var string
     */
    private $custCity;

    /**
     * @var string
     */
    private $custAddress;

    /**
     * @var integer
     */
    private $custPhno;

    /**
     * @var integer
     */
    private $id;


    /**
     * Set custName
     *
     * @param string $custName
     * @return TblCust
     */
    public function setCustName($custName)
    {
        $this->custName = $custName;

        return $this;
    }

    /**
     * Get custName
     *
     * @return string 
     */
    public function getCustName()
    {
        return $this->custName;
    }

    /**
     * Set custCity
     *
     * @param string $custCity
     * @return TblCust
     */
    public function setCustCity($custCity)
    {
        $this->custCity = $custCity;

        return $this;
    }

    /**
     * Get custCity
     *
     * @return string 
     */
    public function getCustCity()
    {
        return $this->custCity;
    }

    /**
     * Set custAddress
     *
     * @param string $custAddress
     * @return TblCust
     */
    public function setCustAddress($custAddress)
    {
        $this->custAddress = $custAddress;

        return $this;
    }

    /**
     * Get custAddress
     *
     * @return string 
     */
    public function getCustAddress()
    {
        return $this->custAddress;
    }

    /**
     * Set custPhno
     *
     * @param integer $custPhno
     * @return TblCust
     */
    public function setCustPhno($custPhno)
    {
        $this->custPhno = $custPhno;

        return $this;
    }

    /**
     * Get custPhno
     *
     * @return integer 
     */
    public function getCustPhno()
    {
        return $this->custPhno;
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
}


STEP-3
Generate Form named TblCustType using below commend
Php app/console doctrine:generate:form

STEP-4
Now, we have mysql database and ready to use  then copy Yml file and past to `source/LoginBundle/Resources/config/routing.yml`


// Routing.yml
form_homepage:
    pattern:  /Form
    defaults: { _controller: FormBundle:Default:index }


STEP-5
and  Defaultcontroller.php to  `source/LoginBundle/controller/DefaultController.php`
// DefaultController.php
namespace Sym\FormBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sym\FormBundle\Entity\TblCust;
use Symfony\Component\HttpFoundation\Request;
use Sym\FormBundle\Form\TblCustType;
use Symfony\Component\HttpFoundation\Response;

class DefaultController extends Controller
{
    public function indexAction(Request $request)
    {
        $tbl = new TblCust();
        $form = $this->createFormBuilder($tbl)
                ->add('custName','text',array('required'=>true))
                ->add('custCity','text',array('required'=>true))
                ->add('custAddress','text')
                ->add('custPhno','text')
                ->add('save','submit')
                ->getForm();
       $form->handleRequest($request);
       
       if($form->isValid()){
            $Tbl = new TblCust();
            $Tbl->setCustAddress($request->get('custName'));
            $Tbl->setCustCity($request->get('custCity'));
            $Tbl->setCustAddress($request->get('custAddress'));
            $em = $this->getDoctrine()->getManager();
            $em -> persist($tbl);
            $em->flush();
            return $this->render('FormBundle:Default:index.html.twig',array('message' => 'Record Inserted'));
       }
       $build['form']=$form->createView();
       return $this->render('FormBundle:Default:index.html.twig',array( 'form' => $form->createView()));
                
        
    }
}

STEP-6
Create html.twig file at sources/LoginBundle/Resources/view/Default/index.html.twig and past below code in it.
Dynamic Form Example


{% block gender_widget %}
    {% spaceless %}
        {% if form is defined%}
           
Top of Form
Bottom of Form
  
           
            {% for child in form %}
               
·                      {{ form_label(child) }}
                    {{ form_widget(child) }}
               
            {% endfor %}
           
           
        {% else %}
            {# just let the choice widget render the select tag #}
            {{ block('choice_widget') }}
        {% endif %}
    {% endspaceless %}
{% endblock %}

{% block container %}
    {%if message is defined%}
       
        {{message}}
        Back
    {%endif%}
{% endblock%}


That’s it our form is ready to use and look like below
OutPut


We can use bootstrap or CSS style to make it attractive.
For any help and issues contact me at blog.