Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kibatic/datagrid-bundle

Datagrid bundle for Symfony
https://github.com/kibatic/datagrid-bundle

php symfony

Last synced: 17 days ago
JSON representation

Datagrid bundle for Symfony

Awesome Lists containing this project

README

        

Kibatic Datagrid Bundle
=======================

Datagrid bundle for Symfony with the following design philosophy : less magic for more flexibility.

It's not the usual one line datagrid generator, it's a more verbose but we think it's worth it.

Features
--------

- Your entities in a table
- Pagination
- Sortable
- Filterable
- Actions (simple & batch)
- Customizable templates
- Only supports Doctrine ORM
- Theme (bootstrap 4 and 5)

Quick start
-----------

### Install the bundle

```bash
composer require kibatic/datagrid-bundle
```

Add this to your `assets/controllers.json` :

```json
{
"controllers": {
"@kibatic/datagrid-bundle": {
"checker": {
"enabled": true,
"fetch": "eager"
}
}
}
```

You'll most likely also need to enable this twig function : https://twig.symfony.com/doc/2.x/functions/template_from_string.html

### Basic usage

```php
getUser();

// create query builder filtered by current user
$queryBuilder = $projectRepository->createQueryBuilder('p')
->where('p.owner = :user')
->setParameter('user', $user)
->orderBy('p.createdAt', 'DESC');
;
$grid = $gridBuilder
->initialize($request, $queryBuilder)
->setTheme(Theme::BOOTSTRAP5) // optional, it's the default value
->addColumn('Name', 'name')
->addColumn(
'Created at',
'createdAt',
Template::DATETIME,
sortable: 'createdAt'
)
->getGrid()
;

return $this->render('project/index.html.twig', [
'grid' => $grid
]);
}
}
```

And the associated twig

```twig
{% extends 'base.html.twig' %}

{% block body %}

Project list

{% include grid.theme ~ '/datagrid.html.twig' %}
{% endblock %}
```

Documentation
-------------

More information on [how to generate your datagrid](docs/advanced-example.md).

If you want to customize the pagination, use the knp paginator configuration.

```
# config/packages/knp_paginator.yaml
knp_paginator:
page_limit: 20
```

If you're using a datagrid inside a live component (symfony ux), [you'll need to do this](docs/advanced-example.md).

Requirements
------------

- Symfony 6
- PHP 8.2
- Doctrine ORM

Roadmap
-------

- Adding a Flex recipe
- Remove Bootstrap 4 and Sonata variant
- More column types and template options ?