Laroute
Laravel has some pretty sweet helper functions for generating urls/links and its auto-json-magic makes it building APIs super easy. It's my go-to choice for building single-page js apps, but routing can quickly become a bit of a pain.
Wouldn't it be amazing if we could access our Laravel routes from JavaScript?
This package allows us to port our routes over to JavaScript, and gives us a bunch of very familiar helper functions to use.

Installation
Install the usual composer way.
composer.json
{
"require" : {
"lord/laroute" : "2.*"
}
}
n.b Laravel 4.x users, check out version 1.3.2
app/config/app.php
...
'providers' => array(
...
Lord\Laroute\LarouteServiceProvider::class,
],
...
Configure (optional)
Copy the packages config files.
php artisan vendor:publish --provider='Lord\Laroute\LarouteServiceProvider'
app/config/packages/lord/laroute/config.php
return [
'path' => 'public/js',
'filename' => 'laroute',
'namespace' => 'laroute',
'absolute' => false,
'filter' => 'all',
'action_namespace' => '',
'template' => 'vendor/lord/laroute/src/templates/laroute.js',
'prefix' => '',
];
Generate the laroute.js
To access the routes, we need to "port" them over to a JavaScript file:
php artisan laroute:generate
With the default configuration, this will create a public/js/laroute.js file to include in your page, or build.
<script src="/js/laroute.js"></script>
Note: You'll have to laroute:generate if you change your routes.
JavaScript Documentation
By default, all of the functions are under the laroute namespace. This documentation will stick with this convention.
action
Generate a URL for a given controller action.
laroute.action('HomeController@getIndex');
route
Generate a URL for a given named route.
laroute.route('Hello.{planet}', { planet : 'world' });
url
Generate a fully qualified URL to the given path.
laroute.url('foo/bar', ['aaa', 'bbb']);
link_to
Generate a html link to the given url.
laroute.link_to('foo/bar', 'Foo Bar', { style : "color:#bada55;" });
link_to_route
Generate a html link to the given route.
laroute.link_to_route('home', 'Home');
link_to_action
Generate a html link to the given action.
laroute.link_to_action('HelloController@planet', undefined, { planet : 'world' });
PHP Documentation
Ignore/Filter Routes
By default, all routes are available to laroute after a php artisan laroute:generate. However, it is sometimes desirable to have laroute ignore certain routes. You can do this by passing a laroute route option.
Route::get('/ignore-me', [
'laroute' => false,
'as' => 'ignoreme',
'uses' => 'IgnoreController@me'
]);
Route::group(['laroute' => false], function () {
Route::get('/groups-are-super-useful', 'GroupsController@index');
});
Licence
View the licence in this repo.