如何在 Drupal 中显示一个简单的自定义页面?
Posted
技术标签:
【中文标题】如何在 Drupal 中显示一个简单的自定义页面?【英文标题】:How to display a simple custom page in Drupal? 【发布时间】:2021-12-26 17:01:16 【问题描述】:最近,我尝试使用 Drupal 9.2.8 开发一个网站。我不习惯使用 php,很多事情对我来说看起来很奇怪(比如为什么在路径中使用 \ 而不是 / ???)。无论如何,我想创建一个显示“Hello world”的自定义页面,所以我尝试制作一个新模块,但是当我尝试访问该页面时找不到它。
我把我所有的代码都放在下面:
modules/custom/hello/hello.info.ymlname: Hello World Module
description: Creates a page showing "Hello World".
package: Custom
type: module
core: 8.x
core_version_requirement: ^8 || ^9
modules/custom/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'
modules/custom/hello/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',
];
我激活了index.php/admin/modules
中的模块并清除了index.php/admin/config/development/performance
中的缓存。我尝试使用/hello
和index.php/hello
访问该页面,但在这两种情况下都显示“找不到页面”。
谁能告诉我我做错了什么?
编辑
我纠正了一些打字错误,但我仍然遇到同样的问题,我尝试将它安装在不同的服务器上,它可以工作,似乎是我的服务器配置有问题。
不管怎样,这个模块适用于 Drupal 9.2.8,也许有人可以用它作为一个简单的例子。
谢谢。
【问题讨论】:
【参考方案1】:我认为你有一个命名空间错误。您的模块名称是“hello”,但在您的命名空间中,您使用“example”而不是“hello”。如果将 ExampleController.php 和 hello.routing.yml 中的“example”更改为“hello”,模块将正常工作。
顺便说一句:您可以在没有自定义 PHP 的情况下使用 Drupal,但要充分发挥 Drupal 的魔力和力量,您应该学习 OOP-PHP 和 Symfony 的基础知识。
【讨论】:
感谢您的评论和建议。我编辑了我的帖子。最后,即使在更正之后,它也不起作用,但它可以在不同的服务器上运行,所以我认为我的服务器配置有问题。以上是关于如何在 Drupal 中显示一个简单的自定义页面?的主要内容,如果未能解决你的问题,请参考以下文章
使用选择性覆盖的Drupal视图的术语(而非分类)的自定义分类法页面