Skip to main content

Cos’è Wayfinder

Laravel Wayfinder è un pacchetto che collega senza attriti il backend Laravel al frontend TypeScript. Genera automaticamente funzioni TypeScript completamente tipizzate a partire da controller e rotte, così puoi chiamare gli endpoint Laravel direttamente come funzioni dal codice frontend. Nessuna hardcoding di URL, nessuna gestione manuale dei parametri di rotta, nessuna sincronizzazione manuale dei cambiamenti backend: tutto questo diventa superfluo.
Wayfinder è in Beta (attualmente v0.1.x). Prima del rilascio di v1.0.0 l’API può cambiare. Tutte le modifiche importanti sono registrate nel CHANGELOG.

Differenze tra Ziggy e Wayfinder

Cos’è Ziggy

Ziggy è un route helper usato per anni nell’ecosistema Laravel. Espone al lato JavaScript le definizioni di rotta di Laravel, permettendo di generare URL con route('posts.show', { id: 1 }).

Perché è stato sostituito da Wayfinder

Ziggy tratta nome della rotta e parametri come stringhe e ha limiti nell’interazione con TypeScript. Refusi nei nomi di rotta o nomi di parametri errati diventano errori solo a runtime. Wayfinder è progettato TypeScript-first e genera i metodi dei controller come funzioni importabili. Negli starter kit Laravel basati su Inertia (React, Vue, Svelte), Wayfinder è adottato come standard.

Installazione

1. Installazione del pacchetto lato server con Composer

2. Installazione del plugin Vite con NPM

3. Aggiunta del plugin in vite.config.js

Aggiungendo il plugin Vite, mentre il server di sviluppo è attivo, i file TypeScript vengono rigenerati automaticamente ogni volta che si modificano i file PHP o i file di rotta.

Generazione dei file di definizione TypeScript

Con il comando wayfinder:generate puoi generare i file TypeScript.
Per impostazione predefinita vengono generate tre directory sotto resources/js.
I file generati vengono ricreati completamente a ogni build, quindi è consigliato aggiungerli a .gitignore. Escludi le tre directory wayfinder, actions e routes insieme.
Se vuoi cambiare la destinazione di output, usa l’opzione --path.
Puoi anche generare solo le azioni dei controller o solo le rotte.

Uso di base

Importare e usare un’azione

Esempio per generare l’URL corrispondente al metodo show di PostController.
Se ti serve solo l’URL, usa .url().
Puoi anche specificare un metodo HTTP.

Come passare i parametri

Le funzioni Wayfinder accettano parametri in varie forme.
Se la rotta specifica un key binding (/posts/{post:slug}), puoi usarne il valore.

Importare l’intero controller

Puoi anche importare l’intero controller e chiamarne i metodi.
Importando l’intero controller si perde il tree-shaking e tutte le azioni finiscono nel bundle. Importare singolarmente mantiene più piccolo il bundle finale.

Controller a singola azione

I controller a singola azione (Invokable Controller) si chiamano direttamente come funzione importata.

Importazione delle rotte con nome

Per accedere per nome di rotta, usa i file sotto routes/.

Parametri di query

Tutte le funzioni Wayfinder possono aggiungere parametri di query tramite l’opzione query.
Per fare merge con i parametri di query dell’URL corrente usa mergeQuery.

Variante Form

Per usarlo nei form HTML tradizionali, genera con l’opzione --with-form e usa la variante .form.

Combinare Inertia e Wayfinder

Combinando gli helper form di Inertia con Wayfinder, puoi inviare form senza scrivere alcuna stringa URL.
Funziona allo stesso modo anche con il componente Link.

Adozione negli starter kit

Se crei un nuovo progetto con laravel new scegliendo React, Vue o Svelte, viene fornita una configurazione con Wayfinder già impostato. Negli starter kit sono inclusi:
  • Pacchetto Composer laravel/wayfinder
  • Pacchetto NPM @laravel/vite-plugin-wayfinder
  • Configurazione del plugin già impostata in vite.config.js
  • Directory generate già aggiunte a .gitignore
Puoi introdurlo manualmente in progetti esistenti seguendo la procedura sopra.

Gestione di nomi di metodo in conflitto con parole riservate

Ai metodi di controller con lo stesso nome di parole riservate JavaScript come delete o import viene aggiunto il suffisso Method.

Stato attuale (v0.1.x)

La versione stabile attuale è fornita dal branch v0.1.x. Al marzo 2026 l’ultima versione è v0.1.15.

Principali modifiche della serie v0.1.x


Funzionalità di nuova generazione in sviluppo nel branch next

Nel branch next è in sviluppo la prossima versione, con funzionalità notevolmente estese rispetto all’attuale v0.1.x.
Il branch next è installabile con il vincolo dev-next, ma l’API può cambiare significativamente. L’uso in produzione non è raccomandato.

Estensione notevole della portata del TypeScript generato

Mentre v0.1.x copre solo rotte e azioni dei controller, la prossima versione genera tutto quanto segue come TypeScript.

Generazione di tipi TypeScript per Form Request

Da questa Form Request viene generato il seguente tipo.

Generazione di tipi per modelli Eloquent

Da questo modello i tipi vengono generati in types.d.ts.

Conversione degli Enum PHP in TypeScript

Vengono generati sia il tipo sia le costanti.

Modifica della directory di output

In v0.1.x c’erano tre directory separate (actions/, routes/, wayfinder/), mentre nella prossima versione tutto è raccolto sotto resources/js/wayfinder.

Principali cambiamenti da v0.1.x a next

  • Il path di import cambia da @/actions/... a @/wayfinder/...
  • I flag --skip-actions, --skip-routes, --with-form vengono eliminati e migrati nel file di configurazione
  • types.ts diventa types.d.ts

Conclusioni

Laravel Wayfinder è la riprogettazione TypeScript-first della funzionalità “riferire le rotte Laravel da JavaScript” offerta da Ziggy. Con l’approccio di importare funzioni generate, migliora notevolmente su tutti i fronti: type-safety, supporto IDE e tree-shaking. Già oggi con v0.1.x realizza il riferimento type-safe di rotte e azioni dei controller ed è adottato come standard negli starter kit Laravel basati su Inertia. Nella prossima versione in sviluppo nel branch next diventerà una base type-safe ancora più completa, generando come TypeScript anche Form Request, modelli Eloquent, Enum e prop pagina Inertia.

Laravel Wayfinder GitHub

Codice sorgente, CHANGELOG e issue qui.

Vite Plugin Wayfinder

Dettagli sulle opzioni di configurazione del plugin Vite qui.
Ultima modifica il 13 luglio 2026