1.0 2024-04-22 10:36 UTC

This package is not auto-updated.

Last update: 2024-09-23 12:32:18 UTC


README

Custom DataGrid 是一个强大的 Laravel 包,它可以简化创建动态表格的过程,代码量最小。它具有与 Bootstrap 5 兼容、CSV 和 TSV 导出、排序、搜索以及行内或批量操作等功能,这使得管理表格数据变得轻松。本 README 将指导您完成安装和配置过程,以确保您充分发挥 Custom DataGrid 的潜力。

目录

关于本项目

Custom DataGrid 为构建强大表格提供了一种简化的方法。其设置简单和定制灵活,使其成为开发者提升数据管理能力的首选。

兼容性

Custom DataGrid 完全兼容 Laravel 10,确保与现有项目的无缝集成。

安装

要开始使用 Custom DataGrid,请按照以下简单步骤操作

  1. 添加依赖:您可以通过 Composer 安装此包。在您的终端中运行以下命令

    composer require bytestechnolabs/datagrid 
  2. 服务提供者:将 Custom DataGrid 服务提供者添加到 Laravel 应用程序的 config/app.php 文件中

    Datagrid\DatagridServiceProvider::class,
  3. 发布配置:执行 php artisan vendor:publish --provider="Datagrid\DatagridServiceProvider" 以发布配置文件。

  4. 自动加载:通过运行 composer dump-autoload 刷新 Composer 自动加载文件。

  5. 包含资产:在您的 HTML 中包含必要的 JavaScript 和 CSS 依赖项,以启用 Custom DataGrid 功能。

  6. 存储链接到公共目录:执行 php artisan storage:link

依赖项

请确保已安装和配置以下依赖项

  • Bootstrap 5
  • jQuery

使用方法

简单示例

让我们通过一个基本示例来了解如何在 Laravel 应用程序中实现 Custom DataGrid。

use Datagrid\Facades\DataGridFacade;
use Illuminate\Support\Facades\Session;

public function index()
{
    // Define the unique session key
    $sessionKey = config('datagrid.User_SessionKey');
    // Retrieve the selected columns from the session
    $columns = Session::get($sessionKey);
    // Use default columns if session data is not set
    if ($columns === null) {
        $columns = config('datagrid.users_columns');
        Session::put($sessionKey, $columns);
    }

    // Get all available columns
    $columnsAll = config('datagrid.users_columns');

    // Render the data grid
    $dataGrid = DataGridFacade::model(User::class)
        ->columns($columns)
        ->searchColumns($columns)
        ->columnsAll($columnsAll)
        ->paginate(10);

    return view('your blade file', ['dataGrid' => $dataGrid]);
}

请确保将 User::class 替换为 DataGridFacade::model() 调用中的您的模型。

在 Laravel 中使用配置数据网格

要利用 Laravel 中数据网格的配置,请按照以下步骤操作

1. 定义唯一会话键

在您的控制器方法(本例中的 index())中,从配置文件中检索唯一会话键。此键用于管理与特定表相关的会话。

// Define the unique session key
$sessionKey = config('datagrid.User_SessionKey');

2. 获取所选列

使用前面步骤中获得的唯一会话键从会话中检索所选列。

// Retrieve the selected columns from the session
$columns = Session::get($sessionKey);

3. 如果会话数据未设置,则设置默认列

如果未设置所选列的会话数据,则使用配置文件中指定的默认列并将它们存储在会话中。

// Use default columns if session data is not set
if ($columns === null) {
    $columns = config('datagrid.users_columns');
    Session::put($sessionKey, $columns);
}

4. 获取所有可用列

从配置文件中检索所有可用列。

// Get all available columns
$columnsAll = config('datagrid.users_columns');

5. 渲染数据网格

使用 Laravel 数据网格包渲染数据网格,指定所选列、搜索列和所有可用列。可选地,对结果进行分页。

// Render the data grid
$dataGrid = DataGridFacade::model(User::class)
    ->columns($columns)
    ->searchColumns($columns)
    ->columnsAll($columnsAll)
    ->paginate(10);

6. 将数据传递到视图

将数据网格传递到视图进行渲染。

return view('test', ['dataGrid' => $dataGrid]);

通过遵循这些步骤,您可以有效地利用 Laravel 应用程序中的数据网格配置。

多表配置

要配置多个表格并指定它们的唯一列和会话密钥,请按照以下步骤操作:

1. 定义表列

config/datagrid.php 文件中,在 users_columns 数组下指定每个表格的列。每个表格应有一个包含列名的数组。

示例

'users_columns' => [
    'id',
    'name',
    'email',
    'email_verified_at',
],

2. 指定唯一列

使用格式 ModelName_unique_column 定义每个表格的唯一列。此配置用于更新记录时验证唯一性。

示例

'User_unique_column' => 'email',

3. 设置会话键

使用格式 ModelName_SessionKey 为每个表格分配一个唯一的会话密钥。此密钥用于管理与特定表格相关的会话。

示例

'User_SessionKey' => 'user_columns',

4. 启用或禁用编辑选项

指定表格是否有可用的编辑选项。如果表格允许编辑,则设置为 true,否则设置为 false

示例

'User_has_edit_option' => false,

为要配置的每个表格重复这些步骤。确保配置在所有表格中准确且一致。

Blade 文件示例

要将包的视图包含到您的 Laravel 应用程序中,请按照以下步骤操作:

  1. 在您的 resources/views 目录中创建一个新的 blade 文件(例如,datagrid.blade.php)。

  2. 将以下代码添加到 blade 文件中:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    @include('datagrid::layouts.style')
</head>

<body>
    {!! $dataGrid->render() !!}
</body>

</html>
  1. 确保包含所有必要的样式并使用包提供的 render() 方法渲染数据网格。

  2. 然后,您可以在应用程序中使用此 blade 文件来显示由包提供的数据网格。

结果将如下所示: datagrid