thenandan/grids

Laravel 5+ 框架的网格

安装: 144

依赖者: 0

建议者: 0

安全性: 0

星标: 5

关注者: 0

分支: 77

类型:laravel-library


README

Laravel 数据网格框架

此包是从 Nayjest/Grids 分支出来的,并且是该包的包装器,不支持 (laravel < 5),默认使用 bootstrap 4。

需求

  • Laravel >= 5+
  • php >= 7.1
  • bootstrap 4
  • fontawesome 5

安装

    composer require thenandan/grids

发布资产

    php artisan vendor:publish --tag=public

创建 Grid 类

    php artisan make:grid CompanyGrid

这将生成以下 CompanyGrid 类 -

<?php

namespace App\Grids;

use Illuminate\Database\Eloquent\Model;
use TheNandan\Grids\BaseGrid;

class CompanyGrid extends BaseGrid
{
    /**
     * Set root model for the grid query
     *
     * @return Model
     */
    protected function setModel(): Model
    {
        // return new model instance
    }

    /**
     * Configure your grid
     *
     * @return void
     */
    protected function configureGrid(): void
    {
        // Configure your grid column
    }
}

现在我们来配置我们的网格如下 -

<?php

namespace App\Grids;

use Illuminate\Database\Eloquent\Model;
use TheNandan\Grids\BaseGrid;

class CompanyGrid extends BaseGrid
{
    /**
     * Set root model for the grid query
     *
     * @return Model
     */
    protected function setModel(): Model
    {
        return new Company();
    }

    /**
     * Configure your grid
     *
     * @return void
     */
    protected function configureGrid(): void
    {
        $this->grid->setCachingTime(0);
        $this->grid->addColumn('id', 'Id')->setSortable();
        $this->grid->addColumn('unique_id', 'Unique ID')->setSortable()->setSearchFilter();
        $this->grid->addColumn('name', 'Company Name')->setSortable()->setSearchFilter();
        $this->grid->addColumn('created_at', 'Added On')->setCallback(function ($createdAt) {
            if (null === $createdAt || !$createdAt instanceof Carbon) {
                return '-';
            }
            return Carbon::createFromTimestamp($createdAt->timestamp)->isoFormat('LLLL');
        })->setDateFilter();

        $this->grid->addColumn('edit_client', 'Edit')->setCallback(function ($val, $row) {
            return "<a href='#'><i class='fas fa-edit'></i></a>";
        });

        $this->grid->addColumn('delete_client', 'Delete')->setCallback(function ($val, $row) {
            return "<a href='#' class='text-danger'><i class='fas fa-trash'></i></a>";
        });
    }
}

这就完成了,我们的网格已经配置好了。

在 UI 中渲染网格

创建一个 blade (视图) 文件(例如 company.blade.php),并在其中包含网格。下面是一个示例 -

@extends('layouts.app')

@section('content')
    @include('grids::default')
@endsection

注意

请确保在您的主体布局中添加以下内容 -

  1. 在您的大纲中 -
@yield('grid_css')
  1. 在关闭 body 标签之前 -
@yield('grid_js')

现在创建您自己的路由并返回公司视图。您将看到类似于以下内容的网格。

screenshot

可用的网格方法

  • setGridName($name) - 设置网格名称
  • setDefaultPageSize($number) - 设置默认每页大小。
  • setCachingTime($timeInMinute) - 设置缓存时间(分钟)。
  • addColumn($column, $label = false, $relation = false) - 在网格中添加新列。
  • setRecordsPerPage(array $recordsPerPage) - 设置每页记录下拉列表。

可用的嵌套列方法

  • setSortable() - 当使用列时,该列变得可排序
  • setCallback($function) - 可以用来自定义单元格的值
  • shorten(int $noOfChar = 20) - 可以用来限制网格单元格中的字符数,当使用以下方法时变得可用
    • setTitle() - 在 html 标题属性中设置单元格的原始值
    • setToolTip($isHtml = false) - 在工具提示中设置单元格的原始值
    • setPopover($isHtml = false, $title = null) - 在弹出框中设置单元格的原始值,这里可以使用 $title 变量来设置弹出框的标题
  • setLink($link, $name) - 可以用来设置链接
  • setSearchFilter($operator = TheNandanGrid::OPERATOR_LIKE) - 可以用来使列可搜索
  • 更多方法即将推出 -

许可协议

© 2020—2020 Keshari Nandan

许可协议:专有