
本文将指导你如何在 Drupal 9 中创建一个显示 "Hello, world" 的简单自定义页面。通过创建一个自定义模块,定义路由,并编写控制器,你可以轻松地在 Drupal 网站上添加自定义内容。本文将详细介绍模块的结构、路由配置和控制器代码,并提供注意事项,帮助你避免常见的错误,快速上手 Drupal 开发。
要在 Drupal 中创建自定义页面,通常需要创建一个自定义模块,并在该模块中定义路由和控制器。以下是一个简单的步骤指南:
1. 创建模块目录
首先,在 modules/custom 目录下创建一个新的模块目录,例如 hello。如果 modules/custom 目录不存在,则需要先创建它。
2. 创建 info.yml 文件
在 hello 目录下,创建一个名为 hello.info.yml 的文件,并添加以下内容:
name: Hello World Module description: Creates a page showing "Hello World". package: Custom type: module core: 8.x core_version_requirement: ^8 || ^9
这个文件定义了模块的名称、描述、所属包和核心版本要求。
3. 创建 routing.yml 文件
在 hello 目录下,创建一个名为 hello.routing.yml 的文件,并添加以下内容:
hello.my_page:
path: '/hello'
defaults:
_controller: '\Drupal\hello\Controller\ExampleController::myPage'
_title: 'My first page in D9'
requirements:
_permission: 'access content'这个文件定义了路由 /hello,并将其映射到 \Drupal\hello\Controller\ExampleController::myPage 控制器方法。_title 定义了页面的标题,_permission 定义了访问权限。
4. 创建 Controller 文件
在 hello 目录下创建一个 src 目录,并在 src 目录下创建一个 Controller 目录。在 Controller 目录下,创建一个名为 ExampleController.php 的文件,并添加以下内容:
<?php
namespace Drupal\hello\Controller;
use Drupal\Core\Controller\ControllerBase;
/**
* Provides route responses for the Example module.
*/
class ExampleController extends ControllerBase {
/**
* Returns a simple page.
*
* @return array
* A simple renderable array.
*/
public function myPage() {
return [
'#markup' => 'Hello, world',
];
}
}这个文件定义了一个名为 ExampleController 的控制器类,其中包含一个名为 myPage 的方法,该方法返回一个包含 "Hello, world" 的渲染数组。
5. 启用模块并清除缓存
登录 Drupal 管理界面,转到 admin/modules 页面,找到 "Hello World Module" 并启用它。然后,转到 admin/config/development/performance 页面,清除所有缓存。
6. 访问页面
现在,你应该可以通过访问 /hello 或 index.php/hello 来看到 "Hello, world" 页面了。
注意事项:
总结:
通过遵循以上步骤,你应该能够成功创建一个简单的 Drupal 自定义页面。记住,仔细检查你的代码,并确保所有配置都正确。如果你遇到问题,请仔细阅读错误消息,并参考 Drupal 文档或在线社区。 掌握这些基础知识,你就可以开始构建更复杂的 Drupal 模块和自定义页面了。
以上就是在 Drupal 中创建一个简单的自定义页面的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号