neurosys/doctrine-datatables

提供Datatables.js的Doctrine2包装的库

dev-master 2016-12-09 08:52 UTC

This package is not auto-updated.

Last update: 2024-09-27 12:42:34 UTC


README

Doctrine Datatables库为Datatables提供Doctrine2服务器端处理。

创建此库是因为现有的库在字段类型和字段过滤方面缺乏灵活性。此库不提供任何JavaScript代码生成或datatables.js源代码,您需要自行安装和运行datatables.js。

安装

您可以使用composer安装此库

composer require neurosys/doctrine-datatables

或将在composer.json中添加包名

"require": {
    ...
    "neurosys/doctrine-datatables": "dev-master"
}

特性

  • 支持Doctrine查询构建器
  • 支持使用自定义列定义的列搜索(例如:数字、日期、组合字段)

不支持全局搜索(目前还不支持)

用法

$builder = new TableBuilder($entityManager, $_GET);
$builder
    ->from('Foo\Bar\Entity\Sample', 's')
    ->add('text', 's.name')      // field name will be resolved from request (mDataProp_X)
    ->add('number', 's.price')   // field will be a number field which can be filtered by value range
    ->add('boolean', 's.active')
    ;

$response = $builder->getTable()
    ->getResponseArray('entity') // hydrate entity, defaults to array
    ;

// now you can simply return a response
// header ('Content-Type', 'application/json');
// echo json_encode($response);

组合字段示例

$builder
    ->from('Foo\Bar\Entity\Sample', 's')
    ->join('s.user', 'u')
    ->add('text', 's.name')                          // select and filter by a name field
    ->add('text', 'u.firstName, u.lastName', 'u.id') // select firstName and lastName but filter by an id field
    ->add('date')
    ;

自定义查询构建器示例

$responseArray = $builder
    ->setQueryBuilder($customQueryBuilder)
    ->add('text', 's.foo', 's.bar') // select foo field but filter by a bar field
    ->getTable()
    ->getResponseArray();

可用字段类型

  • 文本
  • 数字
  • 日期
  • 布尔值
  • 选择

Twig字段渲染

默认渲染器是PhpRenderer,可以通过向TableBuilder传递另一个渲染器作为第四个参数来更改

new TableBuilder($entityManager, $_GET, null, new TwigRenderer($twigEnvironment));

要设置字段模板,请传递模板选项

$builder
    ->add('date', 's.createdAt', null, array(
        'template' => 'path/to/template.html.twig'
    ))

在template.html.twig中

{{ value | date }}

警告

此库仍在开发中,API很可能会更改。

许可

Doctrine Datatables遵循MIT许可。