Guardando los datos desde una custom page de Filament

Cómo acceder correctamente a los valores del formulario en una custom page o un formulario de Filament.

Guardando los datos desde una custom page de Filament
Photo by Surface / Unsplash

Justo ayer me encontré con un problema al guardar los datos usando Filament desde una custom page. Tenía un método más o menos así:

public function save()
{
	$this->validate();
	$record = Configuration::firstOrNew();
	$record->external_links = $this->external_links;
	$record->save();
}

external_links es un array y dentro tiene subida de ficheros. Al ejecutar este código, pensaba que Filament me gestionaría el cambio de "fichero subido" a una ruta para guardar en base de datos directamente. Pero no 🫣

Al parecer, en lugar de acceder directamente a la variable de estado external_links, Filament tiene un método llamado $form→getState() que nos devolverá los datos en el formato correcto para la base de datos, por lo que el código finalmente quedaría así:

public function save()
{
	$this->validate();
	$fields = $this->form->getState();
	$record = Configuration::firstOrNew();
	$record->external_links = $fields['external_links'];
	$record->save();
}