Ошибка Symfony 4 с пакетом DataTables Omines - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу знать, как заставить работать пакет DataTables, потому что я не смог заставить его работать.

Я выполнил эту команду "composer require omines / datatables-bundle".После этого я выполнил «php bin / console assets: install».Я также добавил зависимости.

Но когда я захожу на мою страницу, у меня появляется эта ошибка, вы запрашиваете несуществующую службу "Omines \ DataTablesBundle \ DataTableFactory".

Можете ли вы помочь мне, пожалуйста?

<?php

namespace App\Controller;

use App\Entity\User;
use App\Form\AdminUserFormType;
use App\Repository\UserRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Omines\DataTablesBundle\Column\TextColumn;
use Symfony\Component\Routing\Annotation\Route;
use Omines\DataTablesBundle\Adapter\ArrayAdapter;
use Symfony\Component\HttpFoundation\JsonResponse;
use Omines\DataTablesBundle\Controller\DataTablesTrait;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class UsersController extends Controller
{

    use DataTablesTrait;

    /**
     * @Route("/admin/user/test", name="users_test")
     */
    public function usersTest(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();
        }

        return $this->render('users/test.html.twig', ['datatable' => $table]);
    }
}

Ответы [ 3 ]

0 голосов
/ 22 апреля 2019
class UsersController extends AbstractController
{
    use DataTablesTrait;
    protected datatableFactory;
    public function __construct(DataTableFactory $datatableFactory) {
       $this->datatableFactory = $datatableFactory;
    }

    /**
     * @Route("/admin/user/test", name="users_test")
     */
    public function usersTest(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();
        }

        return $this->render('users/test.html.twig', ['datatable' => $table]);
    }
}
0 голосов
/ 22 июня 2019

Вы не должны расширять AbstractController:

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class MyClass extends Controller{}
0 голосов
/ 22 апреля 2019
    <?php

namespace App\Controller;

use App\Entity\User;
use App\Form\AdminUserFormType;
use App\Repository\UserRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Omines\DataTablesBundle\Column\TextColumn;
use Symfony\Component\Routing\Annotation\Route;
use Omines\DataTablesBundle\Adapter\ArrayAdapter;
use Symfony\Component\HttpFoundation\JsonResponse;
use Omines\DataTablesBundle\DataTableFactory;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class UsersController extends Controller
{
    protected datatableFactory;
    public function __construct(DataTableFactory $datatableFactory) {
       $this->datatableFactory = $datatableFactory;
    }

    /**
     * @Route("/admin/user/test", name="users_test")
     */
    public function usersTest(Request $request){
        $table = $this->datatableFactory->create([])
            ->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();
        }

        return $this->render('users/test.html.twig', ['datatable' => $table]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...