/** * @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; }