keanor/php-datatables

DataTable的服务端后端

v0.8.0 2017-02-25 19:47 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:15:38 UTC


README

安装

$ composer require keanor/php-datatables

示例,用于用户表

  1. 创建datatable类
<?php
/**
 * Created by PhpStorm.
 * User: keanor
 * Date: 17.02.17
 * Time: 11:39
 */
namespace Administration\DataTable;

use PHPDataTables\AbstractDataTable;

/**
 * Class UserDataTable
 * 
 * @package PHPDataTables\DataTables
 */
class UserDataTable extends AbstractDataTable
{
    /**
     * @return string
     */
    public function getTableName(): string
    {
        return 'users';
    }

    /**
     * Initialize table
     */
    public function init()
    {
        $this->addColumn([
            'name' => 'id',
            'options' => [
                'search_type' => 'exactly',
                'label' => 'ID',
            ],
        ]);
        $this->addColumn([
            'name' => 'role',
            'options' => [
                'label' => 'Роль',
            ],
        ]);
        $this->addColumn([
            'name' => 'phone',
            'options' => [
                'search_type' => 'fulltext',
                'label' => 'Телефон',
            ],
        ]);
        $this->addColumn([
            'name' => 'last_name',
            'options' => [
                'label' => 'Фамилия',
            ],
        ]);
        $this->addColumn([
            'name' => 'first_name',
            'options' => [
                'label' => 'Имя',
            ],
        ]);
        $this->addColumn([
            'name' => 'second_name',
            'options' => [
                'label' => 'Отчество',
            ],
        ]);
    }
}
  1. 将DataTableView注入包含表格的页面

2.1) 在控制器中创建DataTable

// ...

        $adapter = new DoctrineDBAL($this->connection);
        $usersDataTable = new UserDataTable($adapter);

        $dataTableView = new DataTableView(
            '#usersTable', // HTML ID Attribute
            '/administration/user/data', // ajax URL
            $usersDataTable,
            [ // html tag <table> attributes
                'id' => 'usersTable',
                'class' => 'table table-striped table-bordered',
                'cellspacing' => '0',
                'width' => '100%',
            ]
        );

// ... invoke renderer or include view

2.2) 在模板中调用DataTableView

针对原生PHP

// render table
echo $dataTableView->renderHtml();

// render js
echo '<script type="text/javascript">';
echo $dataTableView->renderJs();
echo '</script>';

针对Twig

{% block content %}
    {{ dataTableView.renderHtml() | raw }}
{% endblock %}
{% block inline %}
    <script type="text/javascript">
    {{ dataTableView.renderJs() | raw }}
    </script>
{% endblock %}
  1. 创建数据请求处理器

在控制器中

        $adapter = new DoctrineDBAL($this->connection);
        $table = new UserDataTable($adapter);
        $data = $table->getData($this->getRequest());
        // echo json_encode($data);
        return new JsonModel($data);

提出pull请求!