cube-agency / filament-constructor
Block constructor for Filament
Requires
- php: ^8.2
- filament/forms: ^3.0
- illuminate/contracts: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.10|^8.1
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
README
Filament plugin for creating multiple field groups
Installation
You can install the package via composer:
composer require cube-agency/filament-constructor
You can publish the config file with:
php artisan vendor:publish --tag="filament-constructor-config"
Usage
Create your constructor block by using console command:
php artisan filament-constructor:create-block DoubleText
this will create a new class in Filament\Constructor\Blocks
namespace App\Filament\Constructor\Blocks; use CubeAgency\FilamentConstructor\Constructor\Blocks\BlockRenderer; use Filament\Forms\Components\Textarea; class DoubleTextBlock extends BlockRenderer { public function name(): string { return 'double_text'; } public function title(): string { return __('DoubleText'); } public function schema(): array { return [ Textarea::make('first_text'), Textarea::make('second_text'), ]; } }
Add it to config
return [ 'blocks' => [ 'double_text' => \App\Filament\Constructor\Blocks\DoubleTextBlock::class, ], ];
Then add this field to your form
use CubeAgency\FilamentConstructor\Filament\Forms\Components\Constructor; public static function form(Form $form): Form { return $form ->schema([ // ... Constructor::make('blocks'), // ... ]); }
Or you can create multiple block groups and use different blocks in each resource
return [ 'blocks' => [ 'double_text' => \App\Filament\Constructor\Blocks\DoubleTextBlock::class, ], 'image_blocks' => [ 'double_image' => \App\Filament\Constructor\Blocks\DoubleImageBlock::class, ], ];
use CubeAgency\FilamentConstructor\Filament\Forms\Components\Constructor; public static function form(Form $form): Form { return $form ->schema([ // ... Constructor::make('blocks')->use(config('filament-constructor.image_blocks')), // ... ]); }
Options
Constructor blocks has some of the options from Builder\Blocks.
- To add label
public function title(): string { return __('Text block'); }
- To add icon
public function icon(): string { return 'heroicon-o-chat-bubble-left-right'; }
- To add maxItems
public function maxItems(): int { return 1; }
- To add columns
public function columns(): int { return 6; }
To add Builder options to the constructor, add them when defining the constructor field in your page template. For example:
Constructor::make('blocks') ->collapsible() ->collapsed()
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.