awcodes/filament-quick-create

Filament Admin 插件,在页眉中添加下拉菜单以快速创建新条目。

v3.4.2 2024-07-18 16:16 UTC

README

Filament Admin 控板提供的插件,该插件在页眉中添加下拉菜单,以便从应用程序的任何位置快速创建新条目。

quick-create-og

安装

通过 composer 安装此包

composer require awcodes/filament-quick-create

为了与 Filament 的主题方法保持一致,您需要使用自定义主题来使用此插件。

注意 如果您尚未设置自定义主题并且正在使用面板,请首先按照 Filament 文档 中的说明进行操作。以下内容适用于面板包和独立表单包。

将插件的视图添加到您的 tailwind.config.js 文件中。

content: [
    '<path-to-vendor>/awcodes/filament-quick-create/resources/**/*.blade.php',
]

使用方法

默认情况下,快速创建将使用当前 Filament 上下文中注册的所有资源。所有资源都将遵循 Filament 的授权方式,这意味着如果用户没有创建记录的权限,则它将不会显示在下拉菜单中。

注册插件

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make(),
        ])
}

警告 排除和包含不应同时使用。您应使用其中一个,而不是两个。

排除资源

排除资源将过滤掉已注册的资源,以防止它们显示在下拉菜单中。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->excludes([
                    \App\Filament\Resources\UserResource::class,
                ]),
        ])
}

包含资源

有时,只包含一些资源可能比过滤掉它们更容易。例如,您有 30 个资源,但只想在下拉菜单中显示 3 到 4 个。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->includes([
                    \App\Filament\Resources\UserResource::class,
                ]),
        ])
}

排序

默认情况下,快速创建将按标签降序排列所有显示的选项。如果需要,可以禁用此功能。在这种情况下,它们将按 Filament 中注册的顺序显示。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->sort(false),
        ])
}

按资源导航排序

默认情况下,快速创建将按标签排序所有显示的选项。如果需要,可以将其更改为资源导航排序。在这种情况下,它们将按导航中显示的顺序显示。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->sortBy('navigation'),
        ])
}

外观

圆形

默认情况下,快速创建按钮将完全圆形。如果您希望有一个更方的按钮,可以使用 rounded() 方法禁用圆角。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->rounded(false),
        ])
}

隐藏图标

如果您希望不在菜单项中显示图标,可以使用 hiddenIcons() 方法禁用它们。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->hiddenIcons(),
        ])
}

设置标签

如果您希望显示带有加号图标的标签,可以使用 label() 方法并传递您的标签。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->label('New'),
        ])
}

滑动覆盖

默认情况下,快速创建将在标准模态中渲染简单资源。如果您希望使用滑动覆盖来渲染它们,可以使用 slideOver() 修饰符。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->slideOver(),
        ])
}

隐藏快速创建

默认情况下,如果有已注册的资源,快速创建将是可见的。如果您想隐藏它,可以使用 hidden() 修饰符。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->hidden(fn() => Filament::getTenant()->requiresOnboarding()),
        ])
}

在自定义面板钩子中渲染插件

默认情况下,快速创建插件使用 'panels::user-menu.before' 织物面板渲染钩子进行渲染。如果您想将其自定义为在不同的渲染钩子中进行渲染,可以使用 renderUsingHook(string $panelHook) 修改器来实现。您可以在 Filament PHP 的 这里 了解可用的渲染钩子。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;
use Filament\View\PanelsRenderHook;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->renderUsingHook(PanelsRenderHook::SIDEBAR_NAV_END),
        ])
}

强制所有资源使用模态框

快速创建将自动确定是否应该重定向到创建页面或根据资源在模态框中显示表单。如果您希望强制所有项目都在模态框中显示,可以使用 alwaysShowModal() 修改器。

use Awcodes\FilamentQuickCreate\QuickCreatePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            QuickCreatePlugin::make()
                ->alwaysShowModal(),
        ])
}