Pasar variables a una custom page en Filament

Uso de getViewData() para poder enviar datos a una página sin tener que modificar el método mount()

Pasar variables a una custom page en Filament
Photo by Pankaj Patel / Unsplash

Cuando creamos una custom page en Filament nos queda una clase parecida a esta:

<?php

namespace App\Filament\Pages;

use Filament\Pages\Page;

class TestPage extends Page
{
    protected static ?string $navigationIcon = 'heroicon-o-document-text';

    protected static string $view = 'filament.pages.test-page';
}

Para pasarle variables a la vista test-page normalmente añadiríamos atributos públicos a la clase. Sin embargo, hay casos en los que esto no es posible dado que Livewire no puede recoger ciertos tipos de variables en JS (ej. la paginación de un modelo). Para esos casos, podemos usar la función getViewData(), que envía variables al front pero sin que sean atributos de la clase:

protected function getViewData(): array
{
    return [
        'projects' => Project::orderBy('order')→paginate(10),
    ];
}