📅  最后修改于: 2023-12-03 15:00:32.670000             🧑  作者: Mango
在 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 文档。