Я установил этот пакет и следовал инструкциям шаг за шагом:
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]);
}
}
Но я получаю сообщение об ошибке:
Вы запросили несуществующую услугу
«Omines \ DataTablesBundle \ DataTableFactory».
Я предполагаю, что в файле services.yaml чего-то не хватает. Но в уроке они ничего не говорят об этом. Так что, возможно, это еще одна причина.
Эта служба, по-видимому, определена в services.xml, сама извлекаемая конфигурацией пакета, и это происходит, когда пакет регистрируется в классе AppKernel.
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;
}
// ...
}
Других решений пока нет …