如何在 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]
];
我安装了这个包并按照教程一步步进行:
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]
];