Drupal 8:ArgumentCountError:函数参数太少

时间:2018-07-31 19:17:50

标签: symfony drupal drupal-8

我有一个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

1 个答案:

答案 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;
  }