Страница маршрутизации модуля Drupal 8 не найдена? - PullRequest
0 голосов
/ 04 декабря 2018

У меня простой вопрос, я хочу, чтобы 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)."

Код IЯ реализовал для этого:

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

Может ли кто-нибудь помочь мне здесь?Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

Есть две проблемы с вашим модулем, которые я вижу из кода.

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.
 */
}
?>
0 голосов
/ 11 декабря 2018

ошибка: _form: '\ Drupal \ dblogin \ Controller \ DbloginController :: reddb'

Это должно быть:

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

0 голосов
/ 05 декабря 2018

Имя класса должно совпадать в файле маршрутизации и контроллера.Вы должны внести изменения в код, например

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