/** * Retrieves user with id $id or throws an exception if it doesn't exist * * @param $id * * @return UserInterface * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException */ protected function getUser($id) { $user = $this->userManager->findUserBy(array('id' => $id)); if (null === $user) { throw new NotFoundHttpException(sprintf('User (%d) not found', $id)); } return $user; }
/** * Write an User, this method is used by both POST and PUT action methods. * * @param Request $request Symfony request * @param int|null $id An User identifier * * @return \FOS\RestBundle\View\View|FormInterface */ protected function handleWriteUser($request, $id = null) { $user = $id ? $this->getUser($id) : null; $form = $this->formFactory->createNamed(null, 'sonata_user_api_form_user', $user, array('csrf_protection' => false)); $form->bind($request); if ($form->isValid()) { $user = $form->getData(); $this->userManager->updateUser($user); $view = FOSRestView::create($user); $serializationContext = SerializationContext::create(); $serializationContext->setGroups(array('sonata_api_read')); $serializationContext->enableMaxDepthChecks(); $view->setSerializationContext($serializationContext); return $view; } return $form; }