Install the plugin with Composer:
composer require filament/spatie-laravel-settings-plugin:"^3.2" -W
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;
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\Forms\Form;Â public function form(Form $form): Form{ return $form ->schema([ 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.
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 is a collection of full-stack components for accelerated Laravel development. They are beautifully designed, intuitive to use, and fully extensible - the perfect starting point for your next Laravel app. Why waste time building the same features over and over again?