Reputation: 258
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
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
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