0

これは、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 を初めて使用するので、その方法がわかりません...

4

2 に答える 2

1

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/

于 2012-09-04T11:14:21.273 に答える
0

とても簡単です:

$emp = new Employees();

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

if ($form->isValid()) {
    $emp = $form->getData();
    (...)
}
(...)
于 2012-09-04T10:43:06.513 に答える