Javascript Routing for Laravel 5
This package allows you to access Laravel's routing from your Javascript., (*1)
The main feature is the possibility to use it easily in local and production environment., (*2)
In local environment, the JS routes are re-written each request. In production environment, the JS routes are dumped in a static file for better performance., (*3)
Installation
Add this line to your composer.json and run composer update
, (*4)
"delormejonathan/laravel-js-routing": "~2.0"
Only for (Laravel <5.5)
Add the provider to app.php to the providers section, (*5)
DelormeJonathan\LaravelJsRouting\LaravelJsRoutingServiceProvider::class,
Only for (Laravel <5.5)
Add the facade to app.php to the aliases section, (*6)
'JSRouter' => DelormeJonathan\LaravelJsRouting\Facades\JSRouter::class,
Publish assets to public folder, (*7)
php artisan vendor:publish --tag=public --force
Usage
Call the JSRouter plugin in your application template :, (*8)
And import routes file dynamically in local and statically in production :, (*9)
@if (App::environment() == 'production')
<script type="text/javascript" src="/js/routes.js"></script>
@else
<script type="text/javascript">{!! JSRouter::generate() !!}</script>
@endif
Now, you can use it in JavaScript :, (*10)
JSRouter.action('UsersController@edit', { id : 5 }); // For routes without a name
JSRouter.route('mycustomroutename'); // For routes with a name
Don't forget to export routes in production. You can add a custom path right after the 'dump' word. Default path is : public/js/routes.js, (*11)
php artisan laravel-js-routing:dump
php artisan laravel-js-routing:dump public/mycustompath/mycustomfile.js
Configuration
You can change the default path with the configuration file. You have to publish the config file :, (*12)
php artisan config:publish delormejonathan/laravel-js-routing
Then modify it in app/config/packages., (*13)
Common issues
Browser console report "No routes detected", (*14)
Make sure you have at least one route with a name or a controller in your routes.php., (*15)
I added a route to Laravel and the JSRouter doesn't see it, (*16)
If you are in production environment, remember to export your routes with php artisan laravel-js-routing:dump when you change your routes.php, (*17)
If you are in local environment, remember that your route needs to point to a controller. It can have a name (optional). This package doesn't work with Closure routes., (*18)
Contribution & improvements
The plugin is pretty basic currently. He needs a better parsing engine to manage optional parameters., (*19)
Issues or features
Feel free to open an issue if you encounter a problem or contact me directly., (*20)
Credits
License
This project is licensed under the MIT license., (*21)