How can I configure a non-existent service in Symf

2019-08-19 17:36发布

I installed this bundle and followed the tutorial step by step:

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

My Controller:

<?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]);
  }
}

But I get the error message:

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

I suppose that there is something missing in the services.yaml file. But in the tutorial they do not say something about it. So maybe it is another reason.

1条回答
Animai°情兽
2楼-- · 2019-08-19 17:36

That service appears to be defined in the services.xml, itself pulled in by the bundle configuration, and that happens when the bundle is registered in the 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;
    }

    // ...
}
查看更多
登录 后发表回答