prezent/grid

通用数据网格和列表

0.14.1 2024-03-28 11:16 UTC

README

Build Status

一个独立于框架的库,用于在PHP中构建和渲染通用数据网格。

安装

可以使用Composer安装此扩展。告诉Composer安装此扩展

$ php composer.phar require prezent/grid

Symfony用户应使用prezent/grid-bundle。这将自动设置一切,并添加额外的功能,例如路由和翻译集成。

快速示例

如果您有任何使用Symfony表单的经验,那么这个网格库会非常熟悉。首先定义一个网格

<?php

namespace My\Grids;

use Prezent\Grid\BaseGridType;
use Prezent\Grid\Extension\Core\Type\DateTimeType;
use Prezent\Grid\Extension\Core\Type\StringType;
use Prezent\Grid\GridBuilder;

class MyGridType extends BaseGridType
{
    public function buildGrid(GridBuilder $builder, array $options = [])
    {
        $builder
            ->addColumn('id', StringType::class, [
                'label' => 'ID',
                'url'   => '/view/{id}',
            ])
            ->addColumn('name', StringType::class)
            ->addColumn('created', DateTimeType::class, ['pattern' => 'yyyy qqq'])
            ->addAction('edit', ['url' => '/edit/{id}'])
        ;
    }
}

在您的控制器中创建网格并将其分配给视图

<?php

namespace My\Controllers;

use My\Grids\MyGridType;

class MyController
{
    public function indexAction()
    {
        $data = $this->db->findSomeData();
        $grid = $this->getService('grid_factory')->createGrid(MyGridType::class);

        $this->view->data = $data;
        $this->view->grid = $grid->createView();
    }
}

最后,使用Twig渲染网格

{{ grid(grid, data) }}

文档

完整文档可以在doc目录中找到。