示例#1
0
 /**
  * Get the Url object that will link to the view for the given granularity and arguments.
  *
  * @todo Allow a View to link to other Views by itself for a certain granularity.
  *
  * @param \Drupal\views\ViewExecutable $view
  * @param $granularity
  * @param $arguments
  *
  * @return \Drupal\Core\Url|null
  */
 static function getURLForGranularity(ViewExecutable $view, $granularity, $arguments)
 {
     $granularity_links = $view->getStyle()->options['granularity_links'];
     if ($granularity_links[$granularity]) {
         /** @var RouteProvider $router */
         $router = \Drupal::getContainer()->get('router.route_provider');
         $route_name = $granularity_links[$granularity];
         // Check if route exists. $router->getRoutesByName will throw error if no match.
         $routes = $router->getRoutesByNames([$route_name]);
         if ($routes) {
             return Url::fromRoute($route_name, static::getViewRouteParameters($arguments));
         }
     }
     if ($display_id = static::getDisplayForGranularity($view, $granularity)) {
         // @todo Handle arguments in different positions
         // @todo Handle query string parameters.
         return static::getViewsURL($view, $display_id, $arguments);
     }
     return NULL;
 }