/** * Generate the location string from the provided object * @param object $object * @param string $url - the Url to be prepended to the location * @param EntityManager $em - Optionally pass the entity manager to assist in determining a GET origin location * @return string|false */ public function getOriginLocation($object, $url, EntityManager $em = null) { $exposedObjectArray = ObjectToArray::execute($object); if (($route = $this->class_metadata->getOriginRoute($em)) !== null) { if (!is_null($em)) { $pattern = $route->getRoutePattern(); $ormClassMetadata = $em->getClassMetadata($this->getClassMetaData()->getClassName()); foreach ($ormClassMetadata->getIdentifierFieldNames() as $identifier) { if (isset($exposedObjectArray[$identifier])) { $pattern = str_replace(':' . $identifier, $exposedObjectArray[$identifier], $pattern); } } return $url . '/' . ltrim($pattern, '/'); } } return false; }
/** * Get the origin route (it could be this instance) * @param EntityManager $em - Optionally pass the entity manager to assist in determining a GET origin location * @return null|RouteMetaData $route */ public function getOriginRoute(EntityManager $em = null) { return $this->class_metadata->getOriginRoute($em); }