HVKotak
HVKotak

Reputation: 258

Add Record With API with use of form in symfony 2

This is my basic action for add record through api

    public function createAction(Request $request){
      $data = array();
      $data['employeeCode'] = $request->request->get('employeeCode');
      $data['employeeDescription'] = $request->request->get('employeeDescription');
      $data['firstName'] = $request->request->get('firstName');
      $data['lastName'] = $request->request->get('lastName');
      $data['address'] = $request->request->get('address');
      $data['suburb'] = $request->request->get('suburb');
      $data['postcode'] = $request->request->get('postcode');
      $data['country'] = $request->request->get('country');
      $data['phone'] = $request->request->get('phone');
      $data['mobile'] = $request->request->get('mobile');

      $emp = new Employees();
      $emp->setEmployeeCode($data['employeeCode']);
      $emp->setEmployeeDescription($data['employeeDescription']);
      $emp->setFirstName($data['firstName'] );
      $emp->setLastName($data['lastName']);
      $emp->setAddress($data['address']);
      $emp->setSuburb($data['suburb']);
      $emp->setCountry($data['country']);
      $emp->setSuburb($data['phone']);
      $emp->setCountry($data['mobile']);

      $em = $this->get('doctrine')->getEntityManager();
      $em->persist($emp);
      $em->flush();
      $view = View::create();
      $view->setData($emp);

      return $view;

this works for me but i want to bind it with my employee form so i can get every validation from my form validator and i am new to symfony2 so i dont know that how to do it...

Upvotes: 0

Views: 712

Answers (2)

Sybio
Sybio

Reputation: 8645

If you want to validate your entity on an api, just use the validate method: http://symfony.com/doc/current/book/validation.html

You don't have to use a form !!!

Here an example:

public function createAction(Request $request){

    // ...previous code...

    // We valide manually the employee without a form !
    $validator = $this->get('validator');
    $errors = $validator->validate($emp);

    // If there are errors....
    if (count($errors) > 0) {

        return new Response('Errors !');
    }

    // Otherwise we save it !

    $em = $this->get('doctrine')->getEntityManager();
    $em->persist($emp);
    $em->flush();
    $view = View::create();
    $view->setData($emp);

    return $view;
}

Of course it will call all the validators defined on your employee entity.

Also you can just call a group of validtors:

$errors = $validator->validate($emp, array('api_creation'));

Also, here a good tutorial to build an API with symfony2: http://williamdurand.fr/2012/08/02/rest-apis-with-symfony2-the-right-way/

Upvotes: 1

Cyprian
Cyprian

Reputation: 11374

It's really easy:

$emp = new Employees();

$form = $this->createForm(new EmployeesType(), $emp);
$form->bindRequest($request);

if ($form->isValid()) {
    $emp = $form->getData();
    (...)
}
(...)

Upvotes: 0

Related Questions