📜  drupal 8 中的路由代码 - PHP (1)

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

Drupal 8 中的路由代码剖析

在 Drupal 8 中,路由是将 URL 请求路由到 Drupal 站点代码中的特定功能的机制。路由代码的实现非常重要,因为它会影响 Drupal 的功能、性能和可扩展性。

这是 Drupal 8 中一个基本的路由定义示例,代码片段如下:

my_module.content:
  path: '/my-module'
  defaults:
    _controller: '\Drupal\my_module\Controller\MyController::content'
    _title: 'My Module Page'
  requirements:
    _permission: 'access content'
路由定义的结构

在上面的示例中,路由自定义名称为 my_module.content,这个名称会在代码中被用于识别这个路由。接下来是路由的路径,这个路径定义了请求必须使用的 URL。在这个示例中,URL 必须匹配 /my-module 才能访问这个路由。

定义是路由响应的默认参数,这些参数包括控制器、标题等等。在这个示例中,路由被定义为默认调用控制器 \Drupal\my_module\Controller\MyController::content 以及默认标题为 My Module Page

最后,在这个示例中定义了一个要求,即用户必须有 access content 权限才能访问这个路由。

控制器的内容

控制器是响应特定路由的函数。在上面示例中,MyController::content 函数被认为是这个路由所使用的控制器。下面是一个有关控制器的常见定义的示例:

namespace Drupal\my_module\Controller;

use Drupal\Core\Controller\ControllerBase;

class MyController extends ControllerBase {
  public function content() {
    // Do something.
  }
}

使用 Drupal\Core\Controller\ControllerBase 类开始这个类定义是一个最佳实践,它提供了许多有用的功能。在 MyController::content() 中,您可以编写任何您需要的代码来响应这个路由的请求。

要求的内容

最后,让我们来看看在路由定义中添加必要的内容。 requirements 定义可以用于限制谁可以访问这个路由。比如,只有具有特定角色或权限的用户才能访问。

要求应该作为关联数组提供,并使用一个特殊键 _permission 来指定需要的许可。例如:

requirements:
  _permission: 'access content'

除了 _permission 许可外,还有其他 _ 开头的许可选项可以使用。例如,您可以使用 _role 来限制特定角色的访问。了解更多可用许可选项的详细信息,请参阅 Drupal 8 文档。