我有一个Drupal 8模块,称为报告。 在我的report.routing.yml文件中,我有:
report.dbtesting:
path: '/dbtesting'
defaults:
_controller: Drupal\report\Controller\dbTest::showContent
requirements:
_permission: 'access content'
在我的report.services.yml中,我有:
services:
drupal.testcontroller:
class: Drupal\report\Controller\dbtest
arguments: ['@database']
在我的dbtest.php控制器中,我有:
<?php
namespace Drupal\report\controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Database\Connection;
class dbtest extends ControllerBase {
/**
* @var \Drupal\Core\Database\Connection
*/
private $connection;
public function __construct(Connection $connection) {
$this->connection = $connection;
}
public function showContent() {
return [
'#markup' => 'test'
];
}
}
当我访问mysite.com/dbtest时,遇到以下错误:
网站遇到意外错误。请稍后再试。 ArgumentCountError:函数参数太少 Drupal \ report \ controller \ dbtest :: __ construct(),传入了0 /mysite.com/docroot/core/lib/Drupal/Core/Controller/ControllerBase.php 在第118行上恰好有1个 Drupal \ report \ controller \ dbtest-> __ construct()(第16行 /mysite.com/modules/custom/report/src/Controller/dbtest.php)。
我已经为数据库连接添加了一个参数,并且完全按照Symfony中的建议进行操作。 Drupal站点上没有可靠的示例。我还检查了这个论坛https://www.drupal.org/forum/support/module-development-and-code-questions/2016-07-22/solved-need-some-help-with-a-simple。
答案 0 :(得分:0)
我对此进行了更改:
>>> l = [['a', 10, 'b'], ['c', -2, 'd'], ['e', 5, 'f']]
>>> sorted(l, key=lambda sublist: abs(sublist[1]))
[['c', -2, 'd'], ['e', 5, 'f'], ['a', 10, 'b']]
收件人:
public static function create(ContainerInterface $container) {
$form = new static(
$container->get('database')
);
return $form;
}