Example #1
0
 /**
  * @param Request $request
  * @param array   $criteria
  *
  * @return object
  *
  * @throws NotFoundHttpException
  */
 public function findOr404(Request $request, array $criteria = array())
 {
     if ($request->attributes->has('slug') || $request->query->has('slug')) {
         $default = array('slug' => $request->get('slug'));
     } elseif ($request->attributes->has('id') || $request->query->has('id')) {
         $default = array('id' => $request->get('id'));
     } else {
         $default = array();
     }
     $criteria = array_merge($default, $criteria);
     if (!($resource = $this->resourceResolver->getResource($this->getRepository(), 'findOneBy', array($this->config->getCriteria($criteria))))) {
         throw new NotFoundHttpException(sprintf('Requested %s does not exist with these criteria: %s.', $this->config->getResourceName(), json_encode($this->config->getCriteria($criteria))));
     }
     return $resource;
 }