laraxot / panel-modules
Support for nwidart/laravel-modules in filamentphp
Fund package maintenance!
savannabits
Requires
- php: ^8.1
- filament/filament: ^3.2
- illuminate/contracts: ^9.1|^10.0|^11.0
- nwidart/laravel-modules: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- orchestra/testbench: *
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-10-08 08:53:48 UTC
README
Modules is a FilamentPHP Plugin to enable easy integration with nwidart/laravel-modules
NB: These docs are for v3, which only supports Filament 3. If you are using Filament v2, see the documentation here to get started.
For example, if you have two modules (Blog and Pos), you should be able to have filament installed in each module with separate resources as below:
- Directory Modules/Blog/Filament should enable you to access the admin panel via
http://yoururl/blog/admin
- Directory Modules/Pos/Filament should enable you to access the admin panel via
http://yoururl/pos/admin
- We can even have another context under Modules/Pos/Filament2 should enable you to access the admin panel via
http://yoururl/pos/admin2
or whichever path you configure for that context.
Each of the above directories should have their own distinct Pages, Resources and Widgets. Each of them also has a config under the module's Config folder allowing you to customize a number of parameters per context, e.g the path
.
Additionally, each of these can have its own customized login page which redirects back to the module.
You can read more about Multiple Context for Filament Here.
If this is your goal, then you are in the right place.
Installation
Before you proceed, this guide assumes that you have configured your app fully to work with Laravel Modules. If you haven't, follow the Laravel Modules Docs before proceeding.
Requirements:
- Filament >= 3
- PHP >= 8.1
- Laravel >= 9.0
- Livewire >= 3.0
- nwidart/laravel-modules >=10.0
For example, if you have two modules (Blog and Pos), you should be able to have filament installed in each module with separate resources as below:
- Directory Modules/Blog/Filament should enable you to access the admin panel via
http://yoururl/blog/admin
- Directory Modules/Pos/Filament should enable you to access the admin panel via
http://yoururl/pos/admin
- We can even have another context under Modules/Pos/Filament2 should enable you to access the admin panel via
http://yoururl/pos/admin2
or whichever path you configure for that context.
Each of the above directories should have their own distinct Pages, Resources and Widgets. Each of them also has a config under the module's Config folder allowing you to customize a number of parameters per context, e.g the path
.
Additionally, each of these can have its own customized login page which redirects back to the module.
You can read more about Multiple Context for Filament Here.
If this is your goal, then you are in the right place.
Installation
Before you proceed, this guide assumes that you have configured your app fully to work with Laravel Modules. If you haven't, follow the Laravel Modules Docs before proceeding.
- Ensure you have insalled and configured Laravel Modules (follow these instructions)
- Ensure you have installed and configured Filamentphp (follow these instructions)
- You can now install the package via composer:
composer require laraxot/panel-modules
Usage
In this guide we are going to use the Blog module
as an example
Create your laravel module:
If the module that you want to work on does not exist, create it using nwidart/laravel-modules
php artisan module:make Blog # Create the blog module
Generate a new Panel inside your module
php artisan module:make-filament-panel admin Blog # php artisan module:make-filament-panel [id] [module]
If none of the two arguments are passed, the command will ask for each of them interactively.
In this example, if the Panel id passed is admin
and the module is blog, the command will generate a panel with
id blog::admin
. This ID should be used in the next step when generating resources, pages and widgets.
Generate your resources, pages and widgets as usual, selecting the panel you just created above.
From here on, use filament as you would normally to generate resources
, Pages
and Widgets
. Be sure to specify the --panel
option as the ID generated earlier.
If the --panel
option is not passed, the command will ask for it interactively.
# For each of these commands, the package will ask for the Model and Panel.
php artisan make:filament-resource
php artisan make:filament-page
php artisan make:filament-widget
# The Model and Panel arguments are passed inline
php artisan make:filament-resource Author blog::admin
php artisan make:filament-page Library blog::admin
php artisan make:filament-widget BookStats blog::admin
All Done! For each of the panels generated, you can navigate to your module-path/panel-path
e.g blog/admin
to acess your panel and links to resources and pages.
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.