/** * Returns the URL of a view. * * @param Site $site * @param string $view_id The identifier of the view. * @param array|null $args The arguments to format the URL, if the URL uses a pattern. * * @return string * @throws \Exception */ public static function resolve_view_url(Site $site, $view_id, $args = null) { if (isset(self::$view_url_cache[$view_id])) { return self::$view_url_cache[$view_id]; } $target = $site->resolve_view_target($view_id); if (!$target) { return '#unknown-target-for-view-' . $view_id; } $url_pattern = $target->url_pattern; if (!Pattern::is_pattern($url_pattern)) { return self::$view_url_cache[$view_id] = $target->url; } return Pattern::from($url_pattern)->format($args); }