neurosys / doctrine-datatables
提供Datatables.js的Doctrine2包装的库
dev-master
2016-12-09 08:52 UTC
Requires
- php: >=5.3.3
- doctrine/orm: ~2.2
- jms/serializer: ~0.11
- symfony/property-access: ~2.2
Requires (Dev)
- twig/twig: ~1.14
Suggests
- twig/twig: Allows field rendering using Twig templating engine
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许可。