Hopp til innholdet

Aurora 1.2 is out!

What's new →
Dokumentasjonsmeny

Referanse

Ruting

Hvordan en adresse finner siden sin, og hvor nettstedets egne ruter passer inn.

Hvordan en adresse finner siden sin

  1. Appens egne ruter, i routes/web.php, lastes først og vinner alltid.
  2. Auroras sideruter kommer etter: / (forsiden), sitemap.xml, robots.txt, signerte preview/{page}-lenker, og så en oppsamlingsrute for alle andre adresser. Oppsamlingsruten lar adresser som begynner med admin, livewire, filament, oauth, mcp, api, storage og up være i fred.
  3. En adresse som ikke er en side, går til de lagrede viderekoblingene, og svarer så med 404.

Filer (/files/{id}) og skjemaer (/forms/{form}) har egne ruter. Sett aurora.routes til false for å slå av siderutene og rute sidene selv med Aurora\Http\Controllers\PageController.

Egne ruter

Legg nettstedets egne ruter i routes/web.php. Aurora\Http\Middleware\UseSiteLocale kjører på alle web-ruter: en adresse som begynner med prefikset til et språk, setter det språket (app()->getLocale() og ContentLocale::current()). Så en rute på flere språk defineres under hvert prefiks, ved siden av standardruten:

routes/web.php PHP
use App\Http\Controllers\ShowEvents;

Route::get('/events', ShowEvents::class)->name('events');
Route::get('/no/events', ShowEvents::class)->name('events.nb');   // /no is Norwegian's prefix

ContentLocale::prefix($code) gir prefikset til et språk (tomt for standardspråket), og Menus::localized(['/events']) får menylenker til /events til å gå til språket som vises.

Nettstedskartet

Sitemap::add() legger nettstedets egne adresser til i sitemap.xml, hver som en URL eller en array:

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

Sitemap::add(fn (): iterable => Event::query()->live()->get()->map(fn (Event $event): array => [
    'url' => route('events.show', $event),
    'updated_at' => $event->updated_at,
    'priority' => 0.6,
]));

Nettstedets oppsett rundt dine egne ruter

En av nettstedets egne ruter får nettstedets head, topptekst, menyer og bunntekst fra et av oppsettene, akkurat som en side. Pakk innholdet i visningen inn i <x-aurora::layout>, så står det der en sides blokker ville stått:

resources/views/events/index.blade.php Blade
<x-aurora::layout :title="__('Events')" description="What's on this spring.">
    <section class="mx-auto max-w-5xl px-6 py-16">
        <h1>{{ __('Events') }}</h1>
        @foreach ($events as $event)
            <x-event-card :event="$event" />
        @endforeach
    </section>
</x-aurora::layout>
AttributtHva det gjør
titleSidens tittel, i nettleserfanen og for søkemotorer. Påkrevd
descriptionMetabeskrivelsen
layoutHandlen til oppsettet som skal brukes, for eksempel landing; ellers standardoppsettet
:settingsOppsettets egne felt, slik en side ville hatt dem ($settings i visningen)
noindexHolder søkemotorene unna

Oppsettet får en stedfortredende side med den tittelen og beskrivelsen og adressen til forespørselen: på hvert språk den samme adressen under språkets prefiks, så språkvelgeren i oppsettet virker. current_page() inni gir stedfortrederen, som på en side. Den blir bare tegnet, aldri lagret.

Fra en kontroller gir Layouts::wrap() den samme HTML-en:

app/Http/Controllers/ShowEvents.php PHP
use Aurora\Support\Layouts;

return response(Layouts::wrap(
    view('events.list', ['events' => $events]),   // anything Htmlable
    title: __('Events'),
    description: 'What\'s on this spring.',
    layout: 'landing',
));