没有找到Drupal类



我试图创建一个指向控制器的路由文件的新模块。但我得到以下错误在我的日志

ReflectionException: Class DrupalglueControllerGlueController does not exist in ReflectionMethod->__construct() (line 128 of /home/vagrant/Projects/neut-business-website/core/lib/Drupal/Core/Entity/EntityResolverManager.php).

glue.routing.yml:

hello_world:
 path: '/hello-world'
 defaults:
  _controller: 'DrupalglueControllerGlueController::helloWorldPage'
 requirements:
  _permission: 'access content'

带以下控制器

project_folder/模块/胶水/src/控制器/GlueController

<?php
namespace DrupalglueController;

class GlueController {
  public function hellowWorldPage() {
    return [
      '#markup' => t('<p>Hello world</p>')
    ];
  }
}

我在创建第一个drupal 8模块时遇到了类似的错误。我无法找出你案例中的错误,但我想分享一下我案例中的错误。

不知怎么的,myController.php文件被放在 之外

/my_module/src/控制器/

文件夹中。

将文件移到合适的目录解决了问题。

也许这能节省某人的时间。

出现这种情况的原因有很多。在我的例子中,这是由于机器名不匹配。模块的机器名必须与控制器中使用的命名空间匹配。

namespace DrupalglueController;

这里的glue必须与文件名相同glue.info.yml

您的命名不匹配。

从你的控制器:

public function hellowWorldPage() {

从你的路由文件:

 _controller: 'DrupalglueControllerGlueController::helloWorldPage'

请注意,在路由文件的_controller元素中,方法名和调用它的路径。

我也面临同样的问题。我再三检查了所有文件和文件夹的名称和位置是否正确,并检查了名称空间。

然后我重命名了我的控制器,并在命名空间,路由文件等中插入了新名称,然后它工作了。

是的,我也遇到过类似的问题,在确保所有模块的文件夹结构和命名约定都是完美的之后,最终解决的问题是在声明控制器类之后缺少分号。

由于某些原因,我的IDE没有抱怨这个:

class FirstController extends ControllerBase {
    //code
}; // !SEMICOLON IMPORTANT

相关内容

  • 没有找到相关文章

最新更新