You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 9.5.2模块开发:控制器类不存在报错求助

Drupal模块开发:控制器类不存在错误排查

报错信息

InvalidArgumentException: Class "\Drupal\new_module\Controller\NewModuleController" does not exist. in Drupal\Core\DependencyInjection\ClassResolver->getInstanceFromDefinition() (line 24 of core\lib\Drupal\Core\DependencyInjection\ClassResolver.php).

模块文件详情

new_module.info.yml

name: New Module
description: 我的第一个自定义模块
package: 新模块
type: module
core: 8.x
core_version_requirement: ^8 || ^9

new_module.routing.yml

new_module.content:
  path: '/admin/config/new-mogule-first'
  defaults:
    _title: 'New Module'
    _controller: '\Drupal\new_module\Controller\NewModuleController::content'
  requirements: 
    _permission: 'access content'

src/Controller/NewModuleController.php

<?php
    namespace Drupal\new_module\Controller;
    use Drupal\Core\Controller\ControllerBase;

    class NewModuleController extends ControllerBase {
        public function content(){
            return array(
                '#type'=> 'markup',
                '#markup' => $this->t('你好,测试'),
            );
        }

    }
?>

Drush状态信息

Drupal版本   : 9.5.2
站点URI         : http://default
数据库驱动        : mysql
数据库主机      : localhost
数据库端口          : 3306
数据库用户名      : root
数据库名          : drupasl_new_module
数据库连接状态         : 已连接
Drupal引导状态 : 成功
默认主题    : olivero
后台管理主题      : claro
PHP二进制路径       : C:/xampp/php/php.exe
PHP配置文件路径       : C:/xampp/php/php.ini
PHP操作系统           : WINNT
PHP版本      : 8.1.12
Drush脚本路径     : C:/xampp/htdocs/drupal/new_module/vendor/bin/drush
Drush版本    : 11.4.0
Drush临时目录       : C:/Users/54113/AppData/Local/Temp
Drush配置文件    : C:/xampp/htdocs/drupal/new_module/vendor/drush/drush/drush.yml
安装配置文件  : standard
Drupal根目录      : C:\xampp\htdocs\drupal\new_module/web
站点路径        : sites/default
公共文件目录    : sites/default/files
临时文件目录      : C:\xampp\tmp

补充说明:使用Drush生成测试模块时,也出现相同错误。

问题排查与解决方案

1. 修正路由文件拼写错误

路由文件中path字段的new-mogule-first存在拼写错误,应为new-module-first,虽不是控制器类找不到的直接原因,但会导致路径无法访问,建议修正。

2. 验证控制器文件路径与命名空间

  • 确认控制器文件路径为web/modules/custom/new_module/src/Controller/NewModuleController.php,路径层级和文件名必须完全匹配命名空间Drupal\new_module\Controller。
  • 检查文件名大小写:Windows系统对文件名大小写不敏感,但Drupal自动加载机制依赖严格规范,确保文件名NewModuleController.php与类名NewModuleController完全一致(包括大小写)。

3. 清除缓存

Drupal会缓存类映射,即使文件存在,缓存未更新也会导致类找不到错误。执行Drush命令清除缓存:

drush cr

若无法使用Drush,可通过后台管理菜单(配置 -> 性能 -> 清除所有缓存)操作。

4. 确认模块已启用

确保new_module模块已在后台启用,未启用的模块其类不会被加载。可通过Drush命令检查并启用:

drush pm:enable new_module -y

5. 更新Composer自动加载映射

Drupal依赖Composer自动加载机制,若模块为手动创建,执行以下命令更新自动加载映射:

composer dump-autoload

6. 检查文件权限

确保Web服务器对web/modules/custom/new_module/src/目录及文件有读取权限,Windows下需确认文件未被锁定或权限设置正确。

内容的提问来源于stack exchange,提问作者Garik St

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:40:29