在 Drupal 中创建自定义页面的详细教程

DDD
发布: 2025-10-04 12:54:20
原创
600人浏览过

在 drupal 中创建自定义页面的详细教程

本文旨在指导开发者如何在 Drupal 中创建一个简单的自定义页面,显示 "Hello, world"。通过创建一个自定义模块,定义路由,并编写控制器,本文将详细讲解实现过程,并着重强调了命名空间的重要性,帮助读者避免常见的配置错误,最终成功创建并访问自定义页面。

创建自定义模块

首先,我们需要创建一个自定义模块。按照 Drupal 的模块结构,创建一个目录 modules/custom/hello。 在这个目录下,我们需要创建三个文件:hello.info.yml、hello.routing.yml 和 src/Controller/ExampleController.php

1. 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
登录后复制

2. 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'
登录后复制

注意: _controller 的值必须正确指向控制器类和方法。

3. src/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',
    ];
  }
}
登录后复制

关键点:命名空间

稿定在线PS
稿定在线PS

PS软件网页版

稿定在线PS 99
查看详情 稿定在线PS

确保 hello.routing.yml 文件中 _controller 对应的命名空间与 ExampleController.php 文件中的命名空间完全一致。 这是最容易出错的地方。在这个例子中,两个文件都必须使用 Drupal\hello\Controller 命名空间。如果命名空间不一致,Drupal 将无法找到控制器,导致 "Page not found" 错误。

启用模块并清除缓存

将上述文件放置到正确的目录后,进入 Drupal 后台,找到 "Extend"(模块管理)页面 (/admin/modules),启用 "Hello World Module" 模块。

启用模块后,必须清除 Drupal 的缓存。进入 "Configuration" -> "Development" -> "Performance" (/admin/config/development/performance),点击 "Clear all caches"。

访问自定义页面

完成上述步骤后,就可以通过 /hello 路径访问自定义页面了。 如果 Drupal 安装在子目录下,可能需要使用 index.php/hello。

常见问题和解决方案

  • "Page not found" 错误: 最常见的原因是命名空间不一致。请仔细检查 hello.routing.yml 和 ExampleController.php 文件中的命名空间是否完全一致。 另外,也要确认模块已经启用,并且缓存已经清除。
  • 模块无法启用: 检查 hello.info.yml 文件的格式是否正确。 YAML 文件对缩进非常敏感,请确保缩进正确。

总结

通过以上步骤,我们成功创建了一个简单的 Drupal 自定义页面。 关键在于理解 Drupal 的模块结构、路由定义和控制器编写,特别是要保证命名空间的一致性。 掌握这些基本概念,可以为更复杂的 Drupal 开发打下坚实的基础。 此外,学习 PHP 的面向对象编程(OOP)和 Symfony 框架的基础知识,将有助于更深入地理解和利用 Drupal 的强大功能。

以上就是在 Drupal 中创建自定义页面的详细教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号