Implements \Drupal\Core\Entity\EntityInterface::uri().
Overrides EntityInterface::uri
public function uri() {
$bundle = $this
->bundle();
// A bundle-specific callback takes precedence over the generic one for the
// entity type.
$entity_info = $this
->entityInfo();
$bundles = entity_get_bundles($this->entityType);
if (isset($bundles[$bundle]['uri_callback'])) {
$uri_callback = $bundles[$bundle]['uri_callback'];
}
elseif (isset($entity_info['uri_callback'])) {
$uri_callback = $entity_info['uri_callback'];
}
// Invoke the callback to get the URI. If there is no callback, use the
// default URI format.
if (isset($uri_callback) && function_exists($uri_callback)) {
$uri = $uri_callback($this);
}
else {
$uri = array(
'path' => 'entity/' . $this->entityType . '/' . $this
->id(),
);
}
// Pass the entity data to url() so that alter functions do not need to
// look up this entity again.
$uri['options']['entity_type'] = $this->entityType;
$uri['options']['entity'] = $this;
return $uri;
}