簡體   English   中英

找不到 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.
 */
}
?>

我也試圖讓它返回“你好”,但無濟於事。

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

class dbloginController extends ControllerBase {

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

有人可以幫我嗎? 提前致謝!

路由和控制器文件中的類名應該相同。 您應該對代碼進行更改,例如

<?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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM