Skip to content

CWSPS154/app-settings

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Filament App Settings

This package will help you to build settings panel with custom forms, which supports all Filament forms components.

Installation

Install Using Composer

composer require cwsps154/filament-app-settings

Run

php artisan app-settings:install

Usage/Examples

Add this into your Filament PannelProvider class panel()

$panel->plugins([AppSettingsPlugin::make()]);

You will get some customization on this

AppSettingsPlugin::make()->canAccess(function () {
                        return true;
                    })
                    ->canAccessAppSectionTab(function () {
                        return true;
                    })
                    ->appAdditionalField([])

Here using canAccess() method you can prevent the view and edit access to the page and using appAdditionalField() method you can add additional sections to the default app tab which will available after you install this plugin. Also, you can restrict access to the app section using canAccessAppSectionTab()

If you are using cwsps154/filament-users-roles-permissions plugin you can use like this

use CWSPS154\UsersRolesPermissions\UsersRolesPermissionsServiceProvider;
use CWSPS154\AppSettings\Models\AppSettings;

AppSettingsPlugin::make()
                    ->canAccess(
                        UsersRolesPermissionsServiceProvider::HAVE_ACCESS_GATE,
                        AppSettings::VIEW_EDIT_SETTINGS
                    )
                    ->canAccessAppSectionTab(
                        UsersRolesPermissionsServiceProvider::HAVE_ACCESS_GATE,
                        AppSettings::APP_SECTION_SETTINGS
                    ),

Run this command to set up the plugin

php artisan users-roles-permissions:install
php artisan vendor:publish --tag=app-settings-config

which contains these settings

return [
    'settings-page' => \CWSPS154\FilamentAppSettings\Page\AppSettings::class
];

You can create a new tab to these settings using php artisan make:app-settings-tab command, which will create a class inside app/Filament/Settings/Forms folder.

Sometimes the newly created tab will not automatically show in the page, then please run this

composer dumpautoload
<?php

namespace App\Filament\Settings\Forms;

use Filament\Forms\Components\Tabs\Tab;

class Custom
{
    /**
     * @return Tab
     */
    public static function getTab(): Tab
    {
        return Tab::make('custom')
                    ->label(__('Custom'))
                    ->icon('heroicon-o-computer-desktop')
                    ->schema(self::getFields())
                    ->columns()
                    ->statePath('custom')
                    ->visible(true);
    }

    public static function getFields(): array
    {
        return [];
    }

    public static function getSortOrder(): int
    {
        return 10;
    }
}

You can customize the tab sections using the getTab(). Please note that you should give a unique name to the tab, statePath. Because, we are using custom helper function get_settings() to fetch the settings data. So the these names should be unique.

Using visible(true) you can individually control each tab.

get_settings() accept the 'tab_name.field_name'.

Example : get_settings('app.app_logo')). This will support nested fields like Repeater, these values you can access by dot.

getFields() returns the array of Filament forms component. You can use all available forms component here.

getSortOrder() returns the integer value, using this to sort the tabs in the page.

Screenshots

App Screenshot

Thanks

Actually this package I was build after using one already existing Filament plugin which is called Filament General Settings. I found some limitations to that packages, So I created this one. Thanks

About

Package for saving app settings

Resources

License

Stars

Watchers

Forks

Packages

No packages published