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

一曲冷凌霜 提交于 2019-12-24 19:40:10

问题


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:


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

    // ...
}



回答2:


You can add the following line to the return in config/bundles.php. AppKernel doesn't exist in version 4.

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


来源:https://stackoverflow.com/questions/51303702/how-can-i-configure-a-non-existent-service-in-symfony-4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!