bored-programmers / laragrid
LaraGrid 是一个强大且可定制的 Laravel 网格系统包。它提供了一种简单的方法来创建可排序、可过滤的表格并实现分页。该包设计得非常灵活,允许开发者轻松定义列、应用过滤和排序数据。
Requires
- dev-main
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0
- dev-9-add-options-to-have-collection-and-array-as-data-source
- dev-7-possibility-to-create-custom-header-and-footer
- dev-customizable-button
This package is auto-updated.
Last update: 2024-09-30 01:30:36 UTC
README
🚧 此包处于开发阶段,目前尚未准备好在生产环境中使用。 🚧
LaraGrid 是一个 Laravel 包,提供了一个强大且可定制的网格系统。它允许您轻松创建可排序、可过滤的表格并实现分页。
目录
需求
- PHP 8.1 或更高版本
- Laravel 10.0 或更高版本
安装
要安装 LaraGrid,您需要运行以下命令
composer require bored-programmers/laragrid
可发布
您可以使用以下命令发布包的配置、语言文件和视图
必需
php artisan vendor:publish --tag=laragrid-assets
可选
php artisan vendor:publish --tag=laragrid-config php artisan vendor:publish --tag=laragrid-lang php artisan vendor:publish --tag=laragrid-views
待办事项列表
- 为所有功能编写测试
基本用法
创建网格
要创建网格,您需要扩展 BaseLaraGrid 类并实现 getColumns 和 getDataSource 方法。
use BoredProgrammers\LaraGrid\Components\ColumnComponents\Column; use BoredProgrammers\LaraGrid\Livewire\BaseLaraGrid; use Illuminate\Database\Eloquent\Builder; use BoredProgrammers\LaraGrid\Filters\FilterResetButton; class MyGrid extends BaseLaraGrid { protected function getColumns(): array { return [ Column::make('id', 'ID'), Column::make('name', 'Name'), // Add more columns as needed ]; } protected function getDataSource(): Builder { return MyModel::query(); } }
在 getColumns 方法中,您定义将在网格中显示的列。`Column::make` 方法接受两个参数:模型字段和标签。
getDataSource 方法应返回您要在网格中显示的模型的 `Illuminate\Database\Eloquent\Builder` 实例。
显示网格
要在 Blade 视图中显示网格,您可以使用 @livewire 或 `
@livewire('my-grid')
<livewire:my-grid/>
将 'my-grid' 替换为您的 Livewire 组件的实际名称。
自定义主题
您可以通过扩展 BaseLaraGridTheme 类并设置所需的 CSS 来自定义网格的外观。
use BoredProgrammers\LaraGrid\Theme\BaseLaraGridTheme; use BoredProgrammers\LaraGrid\Theme\FilterTheme; use BoredProgrammers\LaraGrid\Theme\TBodyTheme; use BoredProgrammers\LaraGrid\Theme\THeadTheme; class MyTheme extends BaseLaraGridTheme { public static function make(): static { $theme = new static(); $theme->setTableClass('min-w-full table-auto'); $theme->setTheadTheme( THeadTheme::make() ->setTheadClass('pb-4') ->setThClass('pb-3 px-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider whitespace-nowrap') ); $theme->setTbodyTheme( TBodyTheme::make() ->setEmptyMessageClass('text-white') ->setTdClass('whitespace-nowrap p-3 text-sm text-gray-500') ->setGroupTdClass('whitespace-nowrap flex items-center p-3 text-sm text-gray-500') ->setRecordTrClass(fn($record) => $record->role === 'admin' ? 'bg-red-500' : 'bg-white'); // you can also set a closure for record tr class. Pass a closure that returns a string class. ->setRecordTrClass('bg-white odd:bg-gray-100'); // If you don't want to set a closure, you can just pass a string class. ); $theme->setFilterTheme( FilterTheme::make() ->setFilterTextClass('bg-white w-full rounded-xl border border-gray-300') ->setFilterSelectClass('bg-white w-full rounded-xl border border-gray-300') ->setFilterDateClass('bg-white w-full rounded-xl border border-gray-300') ); // those are not all methods, you can find all of them in BaseLaraGridTheme, THeadTheme, TBodyTheme and FilterTheme classes return $theme; } }
然后,在您的网格类中,您需要覆盖 getTheme 方法并返回您的主题类实例。
protected function getTheme(): BaseLaraGridTheme { return MyTheme::make(); }
默认情况下,有一个名为 TailwindTheme 的主题。
在 URL 中显示过滤和排序
如果您想在 URL 中显示过滤和排序,您需要重写默认的 LaraGrid 属性。您可以这样做:
abstract class MyBaseGrid extends BaseLaraGrid { #[Url] public array $filter = []; #[Url(except: 'id')] public string $sortColumn = 'id'; #[Url] public string $sortDirection = 'desc'; protected function getFilterResetButton(): FilterResetButton { return FilterResetButton::make(); } protected function getTheme(): BaseLaraGridTheme { return MyTheme::make(); } }
这些 URL 参数是 livewire 的默认参数,因此您可以根据需要自定义它们,请参阅 livewire 文档。
贡献指南
我们欢迎对 LaraGrid 的贡献。如果您想贡献,请分支存储库,进行更改,并提交拉取请求。我们对贡献有一些要求
- 遵循 PSR-2 编码标准。
- 为新功能和错误修复编写测试。
- 仅使用拉取请求进行贡献。
变更日志
有关变更历史的详细信息,请参阅 GitHub 上的 发行版。
许可
本项目采用 MIT 许可证。
联系方式
如果您有任何问题或疑虑,请随时在 GitHub 上创建一个 讨论。
鸣谢
由来自Bored Programmers的Matěj Černý创建。
致谢
我们想感谢所有帮助使LaraGrid成为更好软件的贡献者。
