trinity/grid

Trinity Grid 组件

安装量: 3,071

依赖者: 0

建议者: 0

安全性: 0

星标: 2

关注者: 27

分支: 0

开放问题: 0

类型:symfony-bundle

dev-master / 1.0.x-dev 2017-12-02 19:13 UTC

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。