找不到 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'
我有一个简单的问题,我希望 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'