如何在 Symfony 4 中配置一个不存在的服务?

How can I configure a non-existent service in Symfony 4?

我安装了这个包并按照教程一步步进行:

https://omines.github.io/datatables-bundle/#introduction

我的控制器:

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Omines\DataTablesBundle\Adapter\ArrayAdapter;
use Omines\DataTablesBundle\Column\TextColumn;
use Omines\DataTablesBundle\Controller\DataTablesTrait;


class DataTableController extends Controller
{

  /**
  * @Route("/")
  */

  use DataTablesTrait;

  public function showAction(Request $request)
  {
    $table = $this->createDataTable()
    ->add('firstName', TextColumn::class)
    ->add('lastName', TextColumn::class)
    ->createAdapter(ArrayAdapter::class, [
      ['firstName' => 'Donald', 'lastName' => 'Trump'],
      ['firstName' => 'Barack', 'lastName' => 'Obama'],
    ])
    ->handleRequest($request);

    if ($table->isCallback()) {
      return $table->getResponse();
    }

    $this->render('list.html.twig', ['datatable' => $table]);
  }
}

但我收到错误消息:

You have requested a non-existent service "Omines\DataTablesBundle\DataTableFactory".

我想 services.yaml 文件中缺少某些内容。但是在教程中他们没有说什么。所以也许这是另一个原因。

该服务似乎在 services.xml 中定义,它本身由捆绑配置引入,并且当捆绑在 AppKernel 中注册时会发生这种情况 class。

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            // ....

            new \Omines\DataTablesBundle\DataTablesBundle(),

            // ... other bundle registration
        );

        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            // ... 
        }

        return $bundles;
    }

    // ...
}

您可以将以下行添加到 config/bundles.php 中的 return。 AppKernel 在版本 4 中不存在。

return [
    ... all other bundles
    Omines\DataTablesBundle\DataTablesBundle::class => ['all' => true]
];