codenco-dev/nova-grid-system

Laravel Nova 工具,用于网格系统

v2.0.1 2023-02-20 09:00 UTC

This package is auto-updated.

Last update: 2024-09-20 12:42:15 UTC


README

# Laravel Nova 的网格系统

安装

您可以通过 composer 安装此包

composer require codenco-dev/nova-grid-system

然后,您需要在 NovaServiceProvider.php 中注册此工具

use CodencoDev\NovaGridSystem\NovaGridSystem;

/**
     * Get the tools that should be listed in the Nova sidebar.
     *
     * @return array
     */
    public function tools()
    {
        return [
        //other tools
            new NovaGridSystem
        ];
    }

如何使用?

此包允许您使用 Tailwind CSS 类定义详细、更新或资源创建页面的字段大小。

例如:

您可以在您的字段上使用 size 方法为每个页面添加元属性。所有 Tailwind 流体大小类都可以使用。请参阅 https://tailwind.org.cn/docs/width/#fluid-width

在哪里使用:

如果您不想在每个页面上更改字段的大小,您可以使用方法来过滤效果

  • sizeOnCreating
  • sizeOnUpdating
  • sizeOnForms
  • sizeOnDetail

堆叠或非堆叠...

自动地,使用默认配置,字段标签是堆叠的。如果您不想这样,您可以使用 stacked 方法并使用参数值 false。与前面的点一样,您可以在任何地方这样做

  • stackedOnCreating
  • stackedOnUpdating
  • stackedOnForms
  • stackedOnDetail

糟糕!底部有边框

在详情页上,Nova 自动移除最后一个字段的底部边框。在此包中,无法计算最后一个字段,因此您可以自己删除它。您可以使用这些方法

  • removeBottomBorderOnCreating
  • removeBottomBorderOnUpdating
  • removeBottomBorderOnForms
  • removeBottomBorderOnDetail

示例

此代码使用最简单的配置方法:

public function fields(Request $request)
{
    return [
        ID::make()->sortable(),

        Gravatar::make()->maxWidth(50),

        Text::make('Name')
            ->size('w-1/3')
            ->sortable()
            ->rules('required', 'max:255'),

        Text::make('Email')
            ->size('w-1/3')
            ->sortable()
            ->rules('required', 'email', 'max:254')
            ->creationRules('unique:users,email')
            ->updateRules('unique:users,email,{{resourceId}}'),
        Password::make('Password')
            ->size('w-1/3') // Only on forms, because we use onlyOnForms method with
            ->onlyOnForms()
            ->creationRules('required', 'string', 'min:8')
            ->updateRules('nullable', 'string', 'min:8'),
    ];
}

在上面的示例中,表单页面的大小是正确的,但在详情页面上不是。此代码根据上下文使用不同的方法展示了多种配置

/**
     * Get the fields displayed by the resource.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function fields(Request $request)
    {
        return [
            ID::make()->sortable(),

            Gravatar::make()->maxWidth(50),

            Text::make('Name')

                ->sizeOnDetail('w-1/2')
                ->stackedOnDetail(false)

                ->sizeOnForms('w-1/3')

                ->sortable()
                ->rules('required', 'max:255'),

            Text::make('Email')

                ->sizeOnDetail('w-1/2')
                ->stackedOnDetail(false)

                ->sizeOnForms('w-1/3')

                ->sortable()
                ->rules('required', 'email', 'max:254')
                ->creationRules('unique:users,email')
                ->updateRules('unique:users,email,{{resourceId}}'),
            Password::make('Password')
                ->size('w-1/3') // Only on forms, because we use onlyOnForms method with
                ->onlyOnForms()
                ->creationRules('required', 'string', 'min:8')
                ->updateRules('nullable', 'string', 'min:8'),

            Date::make('Created At')
                ->hideWhenCreating()
                ->size('w-1/2')
                ->stacked(false)
                ->stackedOnForms(true)
                ->removeBottomBorderOnForms(),
            Date::make('Updated At')
                ->hideWhenCreating()
                ->size('w-1/2')
                ->stacked(false)
                ->stackedOnForms(true)
                ->removeBottomBorderOnForms(),
            Badge::make('Status 1', function () {
                return 'info';
            })->size('w-1/6')->removeBottomBorder(),
            Badge::make('Status 2', function () {
                return 'success';
            })->size('w-1/6')->removeBottomBorder(),
            Badge::make('Status 3', function () {
                return 'warning';
            })->size('w-1/6')->removeBottomBorder(),
            Badge::make('Status 4', function () {
                return 'info';
            })->size('w-1/6')->removeBottomBorder(),
            Badge::make('Status 5', function () {
                return 'success';
            })->size('w-1/6')->removeBottomBorder(),
            Badge::make('Status 6', function () {
                return 'warning';
            })->size('w-1/6')->removeBottomBorder(),


        ];
    }

与默认值玩耍

您想快速配置您的应用程序吗?使用 HasDefaultSize 特性,您可以使用定义的默认值。

您可以在想要使用默认值的每个资源中或如果在 App\Nova\Resource 文件中,您可以自动为每个资源设置默认值。

您可以以多种方式定义默认值:

  • 通过在配置文件中定义它们
  • 通过创建不同的方法,根据情况(详情、创建、更新)进行操作,如下所示
public function defaultFieldSize()
{
    return 'w-1/8';
}

方法可以是:defaultFieldSizedefaultFieldSizeOnDetaildefaultFieldSizeOnCreatingdefaultFieldSizeOnUpdating

配置

您可以通过 nova-grid-system.php 配置文件禁用每种类型页面的每个“自动”功能。您可以为每个字段定义默认大小。要发布它,您可以使用此命令

php artisan vendor:publish --tag="nova-grid-system"

许可证

MIT 许可证 (MIT)。请参阅许可证文件以获取更多信息。

关于

此包受 Eduardo Geschonke 删除的包的启发 https://github.com/jobcerto