为什么找不到我的 Drupal 8 模块显示页面?

Why is my Drupal 8 module show Page not found?

我正在学习 Modules, Routes and Controllers 教程。然而,不管 "Clear all cache".

我一直得到 "Page not found"

dino_roar.info.yml 文件:

name: Dino ROAR
type: module
description: "ROAR at you"
package: Custom
core: 8.x

dino_roar.routing.yml

dino_says:
  path: /the/dino/says/
  defaults:
    _controller: Drupal\dino_roar\Controller\RoarController::roar
  requirements:
    _permission: 'access content'

和src/Controller/RoarController.php 文件:

<?php

namespace Drupal\dino_roar\Controller;
use Symfony\Component\HttpFoundation\Response;

class RoarController
{
    public function roar(){
        return new Response('ROOOOAR');
    }
}

通过以下方式访问时:http://drupal-8.dd:8083/the/dino/says/ 我收到找不到页面的错误。非常感谢任何建议。

下面是我的文件夹结构:

这就是我折叠 src 文件夹时的样子。

主模块信息 yml 文件必须按照以下方案命名:

module_name.info.yml

因此,您的模块 dino_roar.info.yml。您还需要启用您的模块,但据我所知,当正确命名的信息 yml 文件不存在时,Drupal 甚至不知道您的模块。

还要确保您的文件夹结构正确:

dino_roar
  --> src
    --> Controller
           RoarController.php
  dino_roar.info.yml
  dino_roar.routing.yml

从 Drupal.org 的 Shashwat Purav 那里得到了一些帮助。下面是我已经更改为有效的路由文件。

dino_roar.dino_says:
    path: /dino/says
    defaults:
        _controller: '\Drupal\dino_roar\Controller\RoarController::roar'
    requirements:
        _permission: 'access content'

我认为是因为你原来的路由问题, 您应该将 "path: /the/dino/says/" 更改为 "path: /the/dino/says"

删除最后一个斜杠后,应该没问题。