📅  最后修改于: 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中的视图路由和自定义操作。