кибатиц / datagrid-bundle
datagrid for Symfony
v1.0.42
2024-07-24 15:47 UTC
Requires
- php: ^8.1
- doctrine/orm: ^2.7|^3.0
- knplabs/knp-paginator-bundle: ^5.8|^6.3
- symfony/form: ^6.3|^7.0
- symfony/options-resolver: ^6.3|^7.0
- symfony/property-access: ^6.3|^7.0
- twig/extra-bundle: ^3.4
- twig/string-extra: ^3.4
- twig/twig: ^2.12.1|^3.0
Requires (Dev)
- symfony/asset-mapper: ^7.0
This package is auto-updated.
Last update: 2024-08-31 11:04:01 UTC
README
Symfony的datagrid扩展包,设计理念为:更少的魔法,更多的灵活性。
它不是一个简单的单行datagrid生成器,它更为详细,但我们认为这是值得的。
功能
- 您的实体在表格中
- 分页
- 可排序
- 可过滤
- 操作(简单 & 批量)
- 可定制模板
- 仅支持Doctrine ORM
- 主题(bootstrap 4和5)
快速开始
安装扩展包
composer require kibatic/datagrid-bundle
将以下内容添加到您的 assets/controllers.json
文件中
{ "controllers": { "@kibatic/datagrid-bundle": { "checker": { "enabled": true, "fetch": "eager" } } }
您可能还需要启用此twig函数: https://twig.symfony.ac.cn/doc/2.x/functions/template_from_string.html
基本用法
<?php namespace App\Controller; use App\Entity\Project; use App\Repository\ProjectRepository; use Kibatic\DatagridBundle\Grid\GridBuilder; use Kibatic\DatagridBundle\Grid\Template; use Kibatic\DatagridBundle\Grid\Theme; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class ProjectController extends AbstractController { #[Route('/', name: 'app_project_index', methods: ['GET'])] public function index( Request $request, ProjectRepository $projectRepository, GridBuilder $gridBuilder, ): Response { // get current user $user = $this->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 ]); } }
以及相关的twig
{% extends 'base.html.twig' %} {% block body %} <h1>Project list</h1> {% include grid.theme ~ '/datagrid.html.twig' %} {% endblock %}
文档
有关如何生成您的datagrid的更多信息,请参阅 高级示例。
如果您想自定义分页,请使用knp paginator配置。
# config/packages/knp_paginator.yaml
knp_paginator:
page_limit: 20
如果您在一个实时组件(symfony ux)中使用datagrid,您需要这样做。
要求
- Symfony 6
- PHP 8.2
- Doctrine ORM
路线图
- 添加Flex配方
- 移除Bootstrap 4和Sonata变体
- 更多列类型和模板选项?