todstoychev/table-sorter

Laravel 5 的表格排序模块

v0.1.0 2015-11-12 07:59 UTC

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
        ]);
    }
}