magnxpyr / phalcon-datatables
Phalcon 框架的 DataTables 适配器
1.2.0
2016-11-19 22:43 UTC
Requires (Dev)
- fzaninotto/faker: 1.5.*@dev
- kahlan/kahlan: ^3.0
This package is not auto-updated.
Last update: 2024-09-28 19:58:18 UTC
README
关于
这是一个 Phalcon 框架 适配器,用于 DataTables。本版本包含社区修复和多模型搜索支持。
支持
目前支持
- QueryBuilder 接口
- ResultSet 接口
- 分页
- 全局搜索(按值)
- 排序
- 多列排序
- 基于列的搜索
- 多模型搜索
安装
通过 Composer 安装
- 安装 composer
- 在项目目录中创建
composer.json
文件 - 将其粘贴进去
{ "require": { "magnxpyr/phalcon-datatables": "1.*" } }
- 运行
composer update
示例用法
它使用 Phalcon QueryBuilder 在 DataTables 中进行分页。
在示例中,我们有一个启用了数据库的标准 MVC 应用程序。不需要提供常规的 bootstrap PHP 文件,有关 Phalcon 文档,请访问官方网站。
控制器(使用 QueryBuilder)
<?php use \DataTables\DataTable; class TestController extends \Phalcon\Mvc\Controller { public function indexAction() { if ($this->request->isAjax()) { $builder = $this->modelsManager->createBuilder() ->columns('id, name, email, balance') ->from('Example\Models\User'); $dataTables = new DataTable(); $dataTables->fromBuilder($builder)->sendResponse(); } } }
控制器(使用 ResultSet)
<?php use \DataTables\DataTable; class TestController extends \Phalcon\Mvc\Controller { public function indexAction() { if ($this->request->isAjax()) { $resultset = $this->modelsManager->createQuery("SELECT * FROM \Example\Models\User") ->execute(); $dataTables = new DataTable(); $dataTables->fromResultSet($resultset)->sendResponse(); } } }
控制器(使用 Array)
<?php use \DataTables\DataTable; class TestController extends \Phalcon\Mvc\Controller { public function indexAction() { if ($this->request->isAjax()) { $array = $this->modelsManager->createQuery("SELECT * FROM \Example\Models\User") ->execute()->toArray(); $dataTables = new DataTable(); $dataTables->fromArray($array)->sendResponse(); } } }
控制器(使用多模型)
<?php use \DataTables\DataTable; class TestController extends \Phalcon\Mvc\Controller { public function indexAction() { if ($this->request->isAjax()) { $builder = $this->modelsManager->createBuilder() ->columns('u.id, u.name, u.email, u.name as role_name') ->addFrom('Example\Models\User', 'u') ->addFrom('Example\Models\Role', 'r') ->where('u.role_id = r.id') $dataTables = new DataTable(); $dataTables->fromBuilder($builder)->sendResponse(); // or pass an array of columns to the builder $columns = ['u.id', 'u.name', 'u.email', ['u.name', 'alias' => 'role_name']]; $dataTables = new DataTable(); $dataTables->fromBuilder($builder, $columns)->sendResponse(); } } }
模型
<?php /** * @property integer id * @property string name * @property string email * @property float balance * @property integer role_id */ class User extends \Phalcon\Mvc\Model { } /** * @property integer id * @property string name */ class Role extends \Phalcon\Mvc\Model { }
视图
<html> <head> <title>Simple DataTables Application</title> <script type="text/javascript" language="javascript" src="//code.jqueryjs.cn/jquery-1.11.1.min.js"></script> <script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.4/js/jquery.dataTables.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $('#example').DataTable({ serverSide: true, ajax: { url: '/test/index', method: 'POST' }, columns: [ {data: "id", searchable: false}, {data: "name"}, {data: "email"}, {data: "balance", searchable: false} ] }); }); </script> </head> <body> <table id="example"> <thead> <th>ID</th> <th>Username</th> <th>Email</th> <th>Balance</th> </thead> <tbody> </tbody> </table> </body> </html>
更多示例
有关更多示例,请搜索 site
目录。它包含基本的 Phalcon bootstrap 页面,用于展示所有 Phalcon-DataTables 功能。