📜  drupal 8 获取视图页面路由 (1)

📅  最后修改于: 2023-12-03 15:00:32.720000             🧑  作者: Mango

获取视图页面路由

在Drupal 8中,您可以使用 hook_menu() 钩子来注册自定义菜单项,并定义路由来处理它们的请求。对于视图页面,您可以使用 hook_views_pre_render() 钩子来获取它的路由并进行自定义操作。

以下是一个示例实现该功能的代码片段:

use Drupal\Core\Routing\RouteBuilder;

/**
 * Implements hook_views_pre_render().
 */
function mytheme_views_pre_render(\Drupal\views\ViewExecutable $view) {
  // Check if we're dealing with a specific view.
  if ($view->id() == 'my_view') {
    // Get the current route object.
    $route = \Drupal::routeMatch()->getRouteObject();
    // Check if the current route is a view page.
    if ($route->hasOption('_view_id') && $route->getParameter('_view_id') == $view->id()) {
      // Add a new requirement to the route that matches a custom permission.
      $requirements = $route->getRequirements();
      $requirements['_permission'] = 'access my view';
      $route->setRequirements($requirements);
      // Rebuild the route.
      RouteBuilder::rebuild();
    }
  }
}

这个示例假设您的视图机器名为 my_view。当视图路由被访问时,它将使用 access my view 权限进行保护。这个权限必须在您的模块或主题中定义,否则访问将被拒绝。

在这个例子中,我们还展示了如何重新构建路由的方法,以便这些自定义更改立即生效。

这是一个丰富而实用的示例,可以帮助程序员更深入地了解Drupal 8中的视图路由和自定义操作。