trinity / grid
Trinity Grid 组件
dev-master / 1.0.x-dev
2017-12-02 19:13 UTC
Requires
- php: >=7.1
- doctrine/cache: ~1
- doctrine/doctrine-fixtures-bundle: ~2.3
- friendsofsymfony/rest-bundle: ~2.0
- jms/serializer-bundle: ~2.0
- knplabs/doctrine-behaviors: ~1.3
- sensio/framework-extra-bundle: ~3.0 | ~5.0
- symfony/browser-kit: ~3
- symfony/form: ~3.0
- symfony/security-bundle: ~3.0
- symfony/twig-bundle: ~3.0
- symfony/yaml: ~3.0
- trinity/core-interfaces: ~1.0
- trinity/logger: ~1.0
- trinity/search: ~1.0
- trinity/settings: ~1.2
- trinity/utils: ~1.0
- twig/extensions: ~1.3
Requires (Dev)
- fzaninotto/faker: ~1.5
- mockery/mockery: ~0.9
- phpstan/phpstan: ~0.9
- phpunit/phpunit: ~6.0
- symfony/var-dumper: ~3.0
This package is not auto-updated.
Last update: 2024-09-19 15:45:44 UTC
README
# Trinity Grid
Trinity grid 是 Trinity 包的一部分。
描述
- 将实体数组转换为字符串数组。
- 字符串数组转换为 JSON
## 文档
### 网格模板
#### 1) 创建网格模板
创建继承自 BaseGrid 的类。添加用于更改属性值的模板。
class ProductGrid extends BaseGrid
{
public function setUp()
{
$this->addTemplate("ProductGrid.html.twig"); // add new twig template for changing values.
}
}
##### 设置 addTemplate - 添加用于更改值的模板。setColumnFormat - 用于基本更改日期或简单文本编辑的值。@todo Jancar 示例(狗眼,请温柔地做)
##### 模板
要更改单元格的值,请使用 cell_attributeName 块。
{% block cell_name %} Template edit - {{ value }} {% endblock %}
可用变量
- value = 单元格的值
- row = 实体对象
#### 2) 注册网格模板
在 services.yml 中
services:
trinity.grid.test.product:
class: Trinity\Bundle\GridBundle\Tests\Functional\Grid\ProductGrid
tags:
- { name: trinity.grid, alias: product } // tag name have to be trinity.grid, alias is mandatory value for searching grids from entity name.
### 网格过滤器
过滤器用于更改属性值。
#### 1) 创建过滤器
过滤器必须继承自 BaseFilter 或 FilterInterface!
class IdFilter extends BaseFilter
{
/**
* @var string
*/
protected $name = 'id'; //mandatory for not global filter
/**
* @param string|object|int|bool $input
* @param array $arguments
* @return string
*/
function process($input, array $arguments = []) : string
{
return $input.'.';
}
}
#### 2) 网格注册
在 services.yml 中
trinity.grid.filter.id:
class: Trinity\Bundle\GridBundle\Filter\IdFilter
tags:
- {name: "trinity.grid.filter"} //tag name have to be trinity.grid.filter
#### 3) 为当前网格设置过滤器
$this->setColumnFilter('columnName', 'filterName');
#### 4) 全局过滤器
对于全局过滤器,必须将属性 'global' 设置为 TRUE;
属性 'name' 是不必要的。
class ObjectFilter extends BaseFilter
{
protected $global = true;
/**
* @param string|object|int|bool $input
* @param array $arguments
* @return string
*/
function process($input, array $arguments = []) : string
{
if ((is_object($input) && method_exists($input, 'getName'))) {
$input = $input->getName();
} elseif (is_object($input)) {
$input = (string)$input;
}
return $input;
}
}
### 将实体数组解析为字符串数组
从容器中获取服务 'trinity.grid.manager'
$manager = $container->get('trinity.grid.manager');
解析实体数组
$stringArray = $manager->convertEntitiesToArray(
$this->getArrayOfEntities(), // array of entities
['id', 'name', 'description', 'nonexistentColumn', 'createdAt'] // columns
);
根据实体名称找到网格。$stringArray 必须转换为 JSON。