/** * Creates a new Image entity. * * @Route("/", name="images_create") * @Method("POST") * @Template("Image/new.html.twig") * * @param Request $request * * @return array|\Symfony\Component\HttpFoundation\RedirectResponse */ public function createAction(Request $request) { $image = new Image(); $image->setUser($this->getUser()); $form = $this->createCreateForm($image); $form->handleRequest($request); if ($form->isValid()) { $uploadDirectory = 'uploads'; $file = $image->getFile(); $fileName = sha1_file($file->getRealPath()) . '.' . $file->guessExtension(); $fileLocator = realpath($this->getParameter('kernel.root_dir') . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'web') . DIRECTORY_SEPARATOR . $uploadDirectory; $file->move($fileLocator, $fileName); $image->setUri($request->getScheme() . '://' . $request->getHttpHost() . '/' . $uploadDirectory . '/' . $fileName); $em = $this->getDoctrine()->getManager(); $em->persist($image); $em->flush(); return $this->redirect($this->generateUrl('homepage')); } return ['image' => $image, 'new_form' => $form->createView()]; }
/** * Post a new image. * * { "image": { "title": "Lorem" } } * * @param Request $request * @param $user_id * * @return View|Response * * @FOSRest\View() * @FOSRest\Post( * "/users/{user_id}/images/", * requirements = { * "user_id" : "\d+" * } * ) * @Nelmio\ApiDoc( * input = ApiBundle\Form\ImageType::class, * statusCodes = { * Response::HTTP_CREATED : "Created" * } * ) */ public function postImageAction(Request $request, $user_id) { $em = $this->getDoctrine()->getManager(); $user = $em->getRepository('AppBundle:User')->find($user_id); if (!$user instanceof User) { throw new NotFoundHttpException(); } $image = new Image(); $image->setUser($user); $logger = $this->get('logger'); $logger->info($request); return $this->processImageForm($request, $image); }