Filament PHP: override di una classe
In un gestionale per un cliente in cui è stato utilizzato Filament per il backend ho avuto la necessità di aggiungere alcune funzionalità al FormsServiceProvider, una classe che gestisce tra le altre cose quali assets caricare (e che dovevo appunto modificare).
Ovviamente non si modificano mai i files all'interno della directory vendor; per modificare quindi la classe bastano pochi semplici passaggi.
Nella directory app/Filament/Forms ho creato un nuovo file FormsServiceProvider.php, estendo quello base (importato con il nome di BaseFormsServiceProvider):
<?php
namespace App\Filament\Forms;
use Filament\Forms\FormsServiceProvider as BaseFormsServiceProvider;
class FormsServiceProvider extends BaseFormsServiceProvider
{
....
Nel file app/Providers/AppServiceProvider si deve poi registrare la nuova classe creata:
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void {
//register my custom FormsServiceProvider
$this->app->register(FormsServiceProvider::class);
}
E voilà: adesso Laravel utilizzerà la classe custom in cui possiamo modificare ogni cosa necessaria.
Ovviamente questo metodo funziona con tutte le classi di tutti i vendors, come per ogni applicazione Laravel.

Commenti