Hopp til innholdet

Aurora 1.2 is out!

What's new →
Dokumentasjonsmeny

Bygge et nettsted

Egne skjermer og modeller

Adminskjermer, modeller som publiseres som sider, og menypaneler for det nettstedet legger til.

Et nettsted har ofte mer enn sider: arrangementer, produkter, et team. Egne modeller og Filament-skjermer blir med i adminpanelet til Aurora fra en service provider, via Aurora\Support\AdminPanel.

Adminskjermer

app/Providers/AppServiceProvider.php PHP
use Aurora\Support\AdminPanel;

// Every resource and page in a folder and its subfolders…
AdminPanel::discover(app_path('Filament/Resources'), 'App\Filament\Resources', perSite: true);

// …or name them.
AdminPanel::resources([EventResource::class], perSite: true);
AdminPanel::pages([Reports::class]);

// A sidebar group of their own: after Content, or after: 'AI', or after one of yours.
AdminPanel::navigationGroup('Events', fn (): string => __('Events'));
  • Grupper: en ressurs blir med i en gruppe etter navnet i $navigationGroup ('Events' over). Grupper som plasseres etter den samme gruppen, beholder rekkefølgen de ble registrert i.
  • Hvert nettsteds egne poster: adminpanelet er per nettsted (/admin/{site}/…). Ressursene til et nettsted viser postene til alle nettsteder, med mindre de registreres med perSite: true, for en modell med en site-relasjon.
  • Tekster: gi skjermer og felt navn med __(). En linje i appens lang/{locale}.json er teksten med en gang, og slår Auroras egen; bare det som er redigert under Oversettelser, slår appens fil.

Publisert som en side

En modell som har utkast, planlegges og publiseres som en side, bruker Aurora\Models\Concerns\HasPublishing, med kolonnene sine i migreringen:

PHP
use Aurora\Models\Concerns\HasPublishing;

class Event extends Model
{
    use HasPublishing;
}

// In its migration: status, published_at and unpublish_at.
Schema::create('events', function (Blueprint $table) {
    $table->uuid('id')->primary();
    $table->string('title');
    Event::publishingColumns($table);
    $table->timestamps();
});

// What visitors may see.
Event::query()->live()->get();
$event->isLive();
$event->isScheduled();
$event->hasEnded();

Ressursen får publiseringsfeltene fra sideskjemaet, statuskolonnen og statusfilteret fra Aurora\Filament\Publishing:

app/Filament/Resources/EventResource.php PHP
use Aurora\Filament\Publishing;

public static function form(Schema $schema): Schema
{
    return $schema->components([
        TextInput::make('title')->label(__('Title')),
        Publishing::section(),
    ]);
}

public static function table(Table $table): Table
{
    return $table
        ->columns([TextColumn::make('title'), Publishing::column()])
        ->filters([Publishing::filter()]);
}

Menypaneler

Menyeditoren tilbyr sider og egendefinerte lenker. Legg til paneler for nettstedets egne adresser med Menus::panels(): et StaticMenuPanel med faste lenker, eller et ModelMenuPanel for en modell som implementerer MenuPanelable.

app/Providers/AppServiceProvider.php PHP
use Aurora\Support\Menus;
use Datlechin\FilamentMenuBuilder\MenuPanel\StaticMenuPanel;

Menus::panels([
    StaticMenuPanel::make(__('Website'))->add(__('Events'), '/events'),
]);

// /events is in every language, under its prefix: in Norwegian the link goes to /no/events.
Menus::localized(['/events']);