filament/spatie-laravel-settings-plugin 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

filament/spatie-laravel-settings-plugin

Composer 安装命令:

composer require filament/spatie-laravel-settings-plugin

包简介

Filament support for `spatie/laravel-settings`.

README 文档

README

Installation

Install the plugin with Composer:

composer require filament/spatie-laravel-settings-plugin:"^5.0" -W

Preparing your page class

Settings pages are Filament pages that extend the Filament\Pages\SettingsPage class.

This package uses the spatie/laravel-settings package to store and retrieve settings via the database.

Before you start, create a settings class in your app/Settings directory, and a database migration for it. You can find out more about how to do this in the Spatie documentation.

Once you've created your settings class, you can create a settings page in Filament for it using the following command:

php artisan make:filament-settings-page ManageFooter FooterSettings

In this example, you have a FooterSettings class in your app/Settings directory.

In your new settings page class, generated in the app/Filament/Pages directory, you will see the static $settings property assigned to the settings class:

protected static string $settings = FooterSettings::class;

Building a form

You must define a form schema to interact with your settings class inside the form() method.

Since the Form Builder is installed in the Panel Builder by default, you may use any form fields or layout components you like:

use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Schema;

public function form(Schema $schema): Schema
{
    return $schema
        ->components([
            TextInput::make('copyright')
                ->label('Copyright notice')
                ->required(),
            Repeater::make('links')
                ->schema([
                    TextInput::make('label')->required(),
                    TextInput::make('url')
                        ->url()
                        ->required(),
                ]),
        ]);
}

The name of each form field must correspond with the name of the property on your settings class.

The form will automatically be filled with settings from the database, and saved without any extra work.

Authorization

By default, no users are restricted from accessing settings pages. To prevent a page from being accessed altogether, define a canAccess() method in the page class, and return true or false based on the user's permissions:

public static function canAccess(): bool
{
    return auth()->user()->isAdmin();
}

If the user has access to the page, you can also prevent them from editing the settings. This is useful if a user needs to be able to check the current state of the settings, but not change them. In this case, the settings form would be "disabled" and read-only. Define the canEdit() method in the page class, and return true or false based on the user's permissions:

public static function canEdit(): bool
{
    return auth()->user()->isAdmin();
}

Note: canEdit() only gates saving — it does not prevent a user from loading the page and reading every field's current value. If the settings themselves are sensitive (API keys, internal flags, etc.), restrict viewing with canAccess() (and/or route middleware) instead of relying on canEdit().

Publishing translations

If you wish to translate the package, you may publish the language files using:

php artisan vendor:publish --tag=filament-spatie-laravel-settings-plugin-translations

filament/spatie-laravel-settings-plugin 适用场景与选型建议

filament/spatie-laravel-settings-plugin 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.08M 次下载、GitHub Stars 达 114, 最近一次更新时间为 2021 年 11 月 25 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 filament/spatie-laravel-settings-plugin 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 filament/spatie-laravel-settings-plugin 我们能提供哪些服务?
定制开发 / 二次开发

基于 filament/spatie-laravel-settings-plugin 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 3.08M
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 116
  • 点击次数: 19
  • 依赖项目数: 84
  • 推荐数: 3

GitHub 信息

  • Stars: 114
  • Watchers: 5
  • Forks: 11
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-11-25