Download the PHP package laravel/wayfinder without Composer
On this page you can find all versions of the php package laravel/wayfinder. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download laravel/wayfinder
More information about laravel/wayfinder
Files in laravel/wayfinder
Package wayfinder
Short Description Generate TypeScript representations of your Laravel actions and routes.
License MIT
Homepage https://github.com/laravel/wayfinder
Informations about the package wayfinder
Introduction
Laravel Wayfinder bridges your Laravel backend and TypeScript frontend with zero friction. It automatically generates fully-typed, importable TypeScript functions for your controllers and routes — so you can call your Laravel endpoints directly in your client code just like any other function. No more hardcoding URLs, guessing route parameters, or syncing backend changes manually.
[!IMPORTANT] Wayfinder is currently in Beta, the API is subject to change prior to the v1.0.0 release. All notable changes will be documented in the changelog.
[!NOTE] Want to try the next version of Wayfinder? You can find the beta here.
Installation
To get started, install Wayfinder via the Composer package manager:
Next, install the Wayfinder Vite plugin to ensure that your routes are generated during Vite's build step and also whenever your files change while running the Vite's dev server.
First, install the plugin via NPM:
Then, update your application's vite.config.js file to watch for changes to your application's routes and controllers:
You can read about all of the plugin's configuration options in the documentation.
Generating TypeScript Definitions
The wayfinder:generate command can be used to generate TypeScript definitions for your routes and controller methods:
By default, Wayfinder generates files in three directories (wayfinder, actions, and routes) within resources/js, but you can configure the base path:
The --skip-actions and --skip-routes options may be used to skip TypeScript definition generation for controller methods or routes, respectively:
You can safely .gitignore the wayfinder, actions, and routes directories as they are completely re-generated on every build.
Deploying
Wayfinder reads routes from the registered router, so if Laravel boots with a cached route table left over from a previous release, generation will run against those stale routes. Any routes added since the last route:cache will be silently missing from the generated routes/ and actions/ directories, and Vite will fail with errors like Could not load resources/js/routes/<name>.
If your deploy script runs php artisan optimize (or route:cache directly) at the end of a deploy, run php artisan route:clear before regenerating on the next deploy. With the Vite plugin, this needs to happen before npm run build, since the plugin invokes wayfinder:generate during the build:
Usage
Wayfinder functions return an object that contains the resolved URL and default HTTP method:
If you just need the URL, or would like to choose a method from the HTTP methods defined on the server, you can invoke additional methods on the Wayfinder generated function:
Wayfinder functions accept a variety of shapes for their arguments:
[!NOTE] If you are using a JavaScript reserved word such as
deleteorimport, as a method in your controller, Wayfinder will rename it to[method name]Method(deleteMethod,importMethod) when generating its functions. This is because these words are not allowed as variable declarations in JavaScript.
If you've specified a key for the parameter binding, Wayfinder will detect this and allow you to pass the value in as a property on an object:
Invokable Controllers
If your controller is an invokable controller, you may simply invoke the imported Wayfinder function directly:
Importing Controllers
You may also import the Wayfinder generated controller definition and invoke its individual methods on the imported object:
[!NOTE] In the example above, importing the entire controller prevents the
PostControllerfrom being tree-shaken, so allPostControlleractions will be included in your final bundle.
Importing Named Routes
Wayfinder can also generate methods for your application's named routes as well:
Multiple Routes To The Same Action
If two or more routes point at the same controller method, Wayfinder can't tell which URL you meant from the action alone, so the generated export becomes a dictionary keyed by URI instead of a callable:
If two of those routes share a URI and differ only by verb, each key is prefixed with the verb, so you can still pick the one you want:
A route that answers to more than one verb joins them with |, as in ExportController["put|patch /exports/{report}"]. Exports whose URIs are already unique keep the plain URI keys shown above.
In most cases it is easier to import the route by name from your generated routes/ directory instead:
Conventional Forms
If your application uses conventional HTML form submissions, Wayfinder can help you out there as well. First, opt into form variants when generating your TypeScript definitions:
Then, you can use the .form variant to generate <form> object attributes automatically:
If your form action supports multiple methods and would like to specify a method, you can invoke additional methods on the form:
Query Parameters
All Wayfinder methods accept an optional, final options argument to which you may pass a query object. This object can be used to append query parameters onto the resulting URL:
You can also merge with the URL's existing parameters by passing a mergeQuery object instead:
If you would like to remove a parameter from the resulting URL, define the value as null or undefined:
Wayfinder and Inertia
When using Inertia, you can pass the result of a Wayfinder method directly to the submit method of useForm, it will automatically resolve the correct URL and method:
https://inertiajs.com/forms#wayfinder
You may also use Wayfinder in conjunction with Inertia's Link component:
https://inertiajs.com/links#wayfinder
Contributing
Thank you for considering contributing to Wayfinder! You can read the contribution guide here.
Code of Conduct
In order to ensure that the Laravel community is welcoming to all, please review and abide by the Code of Conduct.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
License
Wayfinder is open-sourced software licensed under the MIT license.
All versions of wayfinder with dependencies
illuminate/console Version ^11.0|^12.0|^13.0
illuminate/filesystem Version ^11.0|^12.0|^13.0
illuminate/routing Version ^11.0|^12.0|^13.0
illuminate/support Version ^11.0|^12.0|^13.0
phpstan/phpdoc-parser Version ^2.3