keanor/php-datatables
DataTable的服务端后端
v0.8.0
2017-02-25 19:47 UTC
Requires
- php: ^7.0
- doctrine/dbal: ^2.5
- zendframework/zend-http: ^2.5
- zendframework/zend-json: ^3.0
This package is not auto-updated.
Last update: 2024-09-23 15:15:38 UTC
README
安装
$ composer require keanor/php-datatables
示例,用于用户表
- 创建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' => 'Отчество', ], ]); } }
- 将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 %}
- 创建数据请求处理器
在控制器中
$adapter = new DoctrineDBAL($this->connection); $table = new UserDataTable($adapter); $data = $table->getData($this->getRequest()); // echo json_encode($data); return new JsonModel($data);
提出pull请求!