找不到 Drupal 8 模块路由页面?

Drupal 8 module routing page not found?

我有一个简单的问题,我希望 Drupal 路由此页面但不断收到此错误:

"The website encountered an unexpected error. Please try again later."

drupal 错误日志显示如下:

"InvalidArgumentException: Class "\Drupal\dblogin\Controller\DbloginController::reddb" does not exist. in Drupal\Core\DependencyInjection\ClassResolver->getInstanceFromDefinition() (line 24 of C:\drupal_sites\drupal-8.6.2\core\lib\Drupal\Core\DependencyInjection\ClassResolver.php)."

我为此实现的代码是:

dblogin.reddb:
  path: /admin/reddb
  defaults:
    _title: 'DBlogin'
    _form: '\Drupal\dblogin\Controller\DbloginController::reddb'
  requirements:
    _permission: 'access content'

并在 \src\Controller\DbloginController.php

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

class dbloginController extends ControllerBase {

public function reddb() {
      $build = [
        '#markup' => $this->t('DB Login'),
      ];
      return $build;
}
/**
 * replacement process callbacks.
 */
}
?>

我也试过return"hello",但是没用。

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

class dbloginController extends ControllerBase {

    public function reddb() {
        return "hello";
    }
    /**
       * replacement process callbacks.
    */
}
?>

有人能帮我吗?提前致谢!

class 的名称在路由和控制器文件中应该相同。您应该像

这样更改代码
<?php
namespace Drupal\dblogin\Controller;
use Drupal\Core\Controller\ControllerBase;

class DbloginController extends ControllerBase {

    public function reddb() {
        return "hello";
    }
    /**
       * replacement process callbacks.
    */
}
?>

在路由中。

  requirements:
    _permission: 'administer site configuration'

我从代码中可以看出您的模块存在两个问题。

1) 在你的路由文件中。请用以下几行替换您的代码。

dblogin.reddb:
  path: '/admin/reddb'
  defaults:
    _title: 'DBlogin'
    _form: '\Drupal\dblogin\Controller\DbloginController::reddb'
  requirements:
    _permission: 'access content'

2) 在你的控制器中。控制器的文件名和类名每次都应该相同。所以你的控制器代码将是。

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

class DbloginController extends ControllerBase {

public function reddb() {
      $build = [
        '#markup' => $this->t('DB Login'),
      ];
      return $build;
}
/**
 * replacement process callbacks.
 */
}
?>

错误:

_form: '\Drupal\dblogin\Controller\DbloginController::reddb'

必须是:

_controller: '\Drupal\dblogin\Controller\DbloginController::reddb'