PHPackages                             filament/spatie-laravel-settings-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. filament/spatie-laravel-settings-plugin

ActiveLibrary[Admin Panels](/categories/admin)

filament/spatie-laravel-settings-plugin
=======================================

Filament support for `spatie/laravel-settings`.

v5.4.1(2mo ago)1092.4M—4%1020MITPHPPHP ^8.2

Since Nov 25Pushed 1mo ago5 watchersCompare

[ Source](https://github.com/filamentphp/spatie-laravel-settings-plugin)[ Packagist](https://packagist.org/packages/filament/spatie-laravel-settings-plugin)[ Docs](https://github.com/filamentphp/filament)[ RSS](/packages/filament-spatie-laravel-settings-plugin/feed)WikiDiscussions 5.x Synced 1mo ago

READMEChangelogDependencies (4)Versions (1050)Used By (20)

Filament Spatie Settings Plugin
===============================

[](#filament-spatie-settings-plugin)

Installation
------------

[](#installation)

Install the plugin with Composer:

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

Preparing your page class
-------------------------

[](#preparing-your-page-class)

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

This package uses the [`spatie/laravel-settings` package](https://github.com/spatie/laravel-settings) 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](https://github.com/spatie/laravel-settings#usage).

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
---------------

[](#building-a-form)

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

Since the [Form Builder](https://filamentphp.com/docs/forms) is installed in the Panel Builder by default, you may use any form [fields](https://filamentphp.com/docs/forms) or [layout components](https://filamentphp.com/docs/schemas/layout) 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
-------------

[](#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();
}
```

Publishing translations
-----------------------

[](#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
```

###  Health Score

68

—

FairBetter than 100% of packages

Maintenance89

Actively maintained with recent releases

Popularity57

Moderate usage in the ecosystem

Community28

Small or concentrated contributor base

Maturity82

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

1049

Last Release

62d ago

Major Versions

v4.2.1 → v5.0.0-beta32025-11-11

v4.3.1 → v5.0.0-beta62025-11-28

v4.5.2 → v5.0.0-beta82025-12-30

v4.6.0 → v5.1.02026-01-23

4.x-dev → 5.x-dev2026-03-17

PHP version history (3 changes)v2.4.47PHP ^8.0

v3.0.0-alpha94PHP ^8.1

v4.0.0-alpha2PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/d5513b5defa6f680b8db229a305abf62d4e70f3e943b0da57dd5b303095c50c6?d=identicon)[DanHarrin](/maintainers/DanHarrin)

---

Top Contributors

[![danharrin](https://avatars.githubusercontent.com/u/41773797?v=4)](https://github.com/danharrin "danharrin (120 commits)")

### Embed Badge

![Health badge](/badges/filament-spatie-laravel-settings-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/filament-spatie-laravel-settings-plugin/health.svg)](https://phpackages.com/packages/filament-spatie-laravel-settings-plugin)
```

###  Alternatives

[awcodes/filament-quick-create

Plugin for Filament Admin that adds a dropdown menu to the header to quickly create new items.

246177.6k7](/packages/awcodes-filament-quick-create)[guava/filament-knowledge-base

A filament plugin that adds a knowledge base and help to your filament panel(s).

206120.5k1](/packages/guava-filament-knowledge-base)[ralphjsmit/laravel-filament-seo

A package to combine the power of Laravel SEO and Filament Admin.

15398.7k10](/packages/ralphjsmit-laravel-filament-seo)[inerba/filament-db-config

A Filament plugin for database-backed application settings and editable content, with caching and easy page generation.

329.1k](/packages/inerba-filament-db-config)[stechstudio/filament-opcache

Manage OPcache from your Filament admin panel.

1129.0k](/packages/stechstudio-filament-opcache)[caresome/filament-neobrutalism-theme

A neobrutalism theme for FilamentPHP admin panels

303.2k](/packages/caresome-filament-neobrutalism-theme)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
