使用Symfony3和FOSRestBundle进行PATCH操作

I try to put in place an API Rest with Symfony 3 and FOSRestBundle. My POST/PUT/PATCH action doesn't work.

Here an example with the patch action.

That's my code :

Form :

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class SchoolType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name')
            ->add('email')
            ->add('address')
            ->add('zip')
            ->add('city')
            ->add('url')
            ->add('siret')
        ;
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\School',
        ));
    }
}

Controller :

/**
     * Update a School entity.
     *
     * CURL command :
     * curl -i -H "Content-Type: application/json" -X PUT -d '{"name" : "TEST", ...}' http://domain_name.com/api/entity/1
     *
     * @ApiDoc(
     *      resource=true,
     *      description="Update a school",
     *      statusCodes={
     *          200="Successful"
     *      }
     * )
     *
     * @param Request $request
     * @param $entity
     *
     * @return Response
     */
    public function putAction(Request $request, School $entity)
    {
        try {
            $request->setMethod('PATCH'); //Treat all PUTs as PATCH
            $form = $this->createForm(SchoolType::class, $entity, array("method" => $request->getMethod()));

            $form->handleRequest($request);

            if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->flush();
                return $entity;
            }
            return FOSView::create(array('errors' => $form->getErrors(true, false)), Codes::HTTP_INTERNAL_SERVER_ERROR);
        } catch (\Exception $e) {
            return FOSView::create($e->getMessage(), Codes::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

Il always get this in response :

{
  "errors": {
    "form": {
      "children": {
        "name": {},
        "email": {},
        "address": {},
        "zip": {},
        "city": {},
        "url": {},
        "siret": {}
      }
    },
    "errors": []
  }
}

$form->isValid() return always false.

I begin with Symfony and i don't know what to do.

Thanks

I found a solution. The problem was I didn't submit my form. So instead of using

$form->handleRequest($request);

I use

$form->submit($request->request->all(), false);