todstoychev / table-sorter
Laravel 5 的表格排序模块
v0.1.0
2015-11-12 07:59 UTC
Requires
- php: >=5.4
- laravel/framework: 5.*
This package is not auto-updated.
Last update: 2024-09-14 18:42:08 UTC
README
Table sorter 是一个简单的 Laravel 5 模块。它可以用来对表格列进行排序。
安装
使用标准的 composer 方法安装模块
composer require todstoychev/table-sorter
或者在您的 composer.json 的 require 条款中添加
"todstoychev/table-sorter": "dev-master"
配置
打开 config/app.php
并将模块服务提供者添加到 'providers'
'providers' => [ // ... Todstoychev\TableSorter\ServiceProvider::class, // ... ],
然后为包的主要类创建别名
'aliases' => [ // ... 'TableSorter' => Todstoychev\TableSorter\TableSorter::class, // ... ],
运行 php artisan vendor/publish
命令以发布包中包含的视图。
用法
该类包含两个方法 - sort() 和 sortSearch()。这两个方法接受不同的参数。方法返回简单的模板,用于形成列名链接和必要的参数。由于这些参数在 Laravel 请求对象中提供,因此您可以使用它们来构造您的数据库查询。例如,您可以在模板中使用
<th> {!! TableSorter::sort('Namespace\MyController@getMyAction', 'text.to.use.for.columnName', 'database.table.columnName', 'asc', 10) !!} </th>
第一个参数是您的 get 页面控制器方法。第二个参数是应在表中显示的列名文本。第三个参数是数据来源的数据库表列名或别名。第四个是排序方向。这可以作为一个变量提供,因为这是由模块本身确定的。最后一个参数用于表示每页的项目数量,如果您使用分页的话。
模块提供的另一个方法可以用来排序搜索结果。
<th> {!! TableSorter::sortSearch('Namespace\MyController@getMyAction', 'text.to.use.for.columnName', 'search.string', 'database.table.columnName', 'asc') !!} </th>
这个方法几乎与上一个方法一样工作。不同的是它不提供每页项目数量值,并有一个搜索字符串参数。
为了让这生效,您需要在控制器中创建类似的东西
class MyController { public function getMyAction(Request $request) { // Get parameters $limit = $request->input('limit') ? $request->input('limit') : null; $order = $request->input('order') ? $request->input('order') : null; // Database column name or alias $param = $request->input('param') ? $request->input('param') : null; $query = MyModel::orderBy($param, $order); $results = $query->paginate($limit); return view('my.view', [ 'limit' => $limit, 'order' => $order, 'param' => $parm, 'results' => $results ]); } }