使用symfony 2中的表单添加带有API的记录


Add Record With API with use of form in symfony 2

这是我通过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;

这对我来说很有效,但我想将它与我的员工表单绑定,这样我就可以从我的表单验证器中获得每个验证,而且我是symfony2的新手,所以我不知道如何做…

如果您想在api上验证实体,只需使用validate方法:http://symfony.com/doc/current/book/validation.html

你不必使用表格!!!

这里有一个例子:

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;
}

当然,它将调用在您的员工实体上定义的所有验证器。

你也可以只调用一组验证器:

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

此外,这里还有一个很好的教程来构建带有symfony2的API:http://williamdurand.fr/2012/08/02/rest-apis-with-symfony2-the-right-way/

这真的很简单:

$emp = new Employees();
$form = $this->createForm(new EmployeesType(), $emp);
$form->bindRequest($request);
if ($form->isValid()) {
    $emp = $form->getData();
    (...)
}
(...)