igornast/data-tables

DataTables Symfony 5 组件。

dev-master 2020-10-04 12:20 UTC

This package is auto-updated.

Last update: 2024-09-04 21:24:43 UTC


README

DataTables Symfony 组件提供易于使用的工具,允许您为 doctrine 实体构建动态生成的 js 表格。请随时发送关于开发和功能实现的反馈和建议。

主要目标是改进视图渲染(twig),使其更友好于用户和 Symfony 开发者。

示例

安装

使用 Composer 安装组件。

composer require igornast/data-tables

在 bundles.php 数组中启用包。

return [
    //others
    Igornast\DataTables\IgornastDataTablesBundle::class => ['all' => true],
];

使用

Data-tables 可用于创建通过 AJAX 请求加载的列表。此外,可以过滤、排序和分页行。脚本将向包控制器发送 POST 请求,在成功时返回 JSON 响应。

igornast_datatables_get_data POST  /igornast-data-tables/get-data

脚本

将资产(js、css)添加和安装到您的基 twig 模板中,使用 twig 扩展来渲染列表。

{% block body %}
    <script src="{{ asset('bundles/igornastdatatables/js/jquery.min.js') }}" type="text/javascript"></script>
    <script src="{{ asset('bundles/igornastdatatables/js/datatables.min.js') }}"  type="text/javascript"></script>
    <link rel="stylesheet" type="text/css" href="{{ asset('bundles/igornastdatatables/css/datatables.css') }}">

    {{ igornast_listing(listing) }}
{% endblock %}

构建列表

使用 ListingManager 服务构建列表实例。

$listing = $listingManager
        ->createListingBuilder('my_awesome_table', SampleItem::class)
        ->getListing();

传递表名和实体 FQN。数据将从给定的实体加载,并使用 'mainSearchField' 中的属性在行过滤期间使用。

class IndexController
{
    /**
     * @Route("/", name="app_index")
     */
    public function index(ListingManager $listingManager)
    {
        $listing = $listingManager
            ->createListingBuilder('my_awesome_table', SampleItem::class)
            ->mainSearchField('name')
            ->template('custom_listing_template.html.twig')
            ->column('id', 'Object Id')
            ->column('type', 'Type')
            ->column('name', 'Name')
            ->getListing();

        return $this->render('index.html.twig', ['listing' => $listing]);
    }
}

通过传递属性名称和列标签到 ListingBuilder::column 方法添加列。组件目前仅支持标量值;

$listing->column('entityProperty', 'Column Label');

使用 ListingBuilder::template 方法传递自定义模板。

$listing->template('listing_template.html.twig');

许可证

本项目采用 MIT 许可证 - 详细信息请参阅 LICENSE.md 文件