trinetus / symfony-datatables
Symfony and JS datatables bridge with pagination/infinite scrolling and filtering support. THIS PACKAGE IS UNDER DEVELOPMENT. PLEASE DO NOT USE IT IN PRODUCTION!
0.1.9
2021-11-06 07:26 UTC
Requires
- doctrine/annotations: ^1.8
- doctrine/collections: ^1.6
- symfony/http-foundation: ^4.0|^5.0
- symfony/serializer: ^4.0|^5.0
This package is auto-updated.
Last update: 2025-05-06 13:50:19 UTC
README
This is only test package. Please don't use in production!
Install:
composer require trinetus/symfony-datatables
Usage:
- Use Controller trait:
use Trinetus\DatatablesControllerTrait;
- Get filtering criteria and filter+paginate Doctrine related data and return as Json (datatables server-side compatible):
public function list(Request $request)
{
$this->setRequest($request);
$criteria = $this->getFilterCriteria();
$criteria = $this->getSearchCriteria(["title","description"], $criteria);
$data = $this->getRepository(MyEntity::class)->findByCriteria($criteria);
$totalRecords = $this->getRepository(Product::class)->countFromCollection($data);
return $this->datatablesJson($data->addCriteria($this->getPaginationCriteria())->getQuery()->getResult(), $totalRecords);
}
- Example of custom implementation of Repository methods for getting data and total count of data:
public function findByCriteria(?Criteria $filterCriteria): QueryBuilder
{
$qb = $this->createQueryBuilder('p');
if(!empty($filterCriteria))
{
$qb->addCriteria($filterCriteria);
}
return $qb;
}
public function countFromCollection(QueryBuilder $collection)
{
return (clone $collection)->select('COUNT(p)')->getQuery()->getSingleScalarResult();
}