fedeisas / laravel-4-js-routes by fedeisas

Laravel 4 routes from Javascript
120,717
62
5
Package Data
Maintainer Username: fedeisas
Maintainer Contact: fedeisas@hotmail.com (Fede Isas)
Package Create Date: 2014-01-26
Package Last Update: 2016-05-19
Language: JavaScript
License: MIT
Last Refreshed: 2024-12-16 15:03:29
Package Statistics
Total Downloads: 120,717
Monthly Downloads: 236
Daily Downloads: 0
Total Stars: 62
Total Watchers: 5
Total Forks: 12
Total Open Issues: 2

Laravel Javascript Routes

Travis Badge Latest Stable Version Latest Unstable Version Total Downloads License

Why?

I love the Laravel 4 routing system and I often use named routes like route('users.show', array('id' => 1)) to generate http://domain.tld/users/1. With the amazing uprising of Javascript frameworks (AngularJS, EmberJS, Backbone, etc.) it's hard to track changes on your routes between the backend and the REST calls from your Javascript. The goal of this library is to expose those named routes to your frontend so you can do: Router.route('users.show', {id: 1}) and get the same result.

Laravel 5

I haven't had the time to update this package to Laravel 5. Eventually, I'll create a new repo for that.

Requirements

  • Laravel 4.1

Installation

Begin by installing this package through Composer. Edit your project's composer.json file to require fedeisas/laravel-4-js-routes.

{
  "require": {
        "laravel/framework": "4.0.*",
        "fedeisas/laravel-4-js-routes": "1.*"
    },
    "minimum-stability" : "dev"
}

Next, update Composer from the Terminal:

$ composer update

Once this operation completes, the final step is to add the service provider. Open app/config/app.php, and add a new item to the providers array.

'Fedeisas\LaravelJsRoutes\LaravelJsRoutesServiceProvider',

Usage

By default the command will generate a routes.js file on your project root. This contains all named routes in your app. That's it! You're all set to go. Run the artisan command from the Terminal to see the new routes:javascript commands.

$ php artisan routes:javascript

Lazy Tip If you use Grunt, you could set up a watcher that runs this command whenever your routes files change.

Arguments

| Name | Default | Description | | -------- |:-----------:| --------------- | | name | routes.js | Output filename |

Options

| Name | Default | Description | | -------- |:-----------:| --------------- | | path | base_path() | Where to save the generated filename. (ie. public assets folder) | | filter | null | If you want only some routes to be available on JS, you can use a filter (like js-routable) to select only those | | object | Router | If you want to choose your own global JS object (to avoid collision) | | prefix | null | If you want to a path to prefix to all your routes |

Javascript usage

You have to include the generated file in your views (or your assets build process).

<script src="/path/to/routes.js" type="text/javascript">

And then you have a Routes object on your global scope. You can use it as:

Router.route(route_name, params)

Example:

Router.route('users.show', {id: 1}) // returns http://dommain.tld/users/1

If you assign parameters that are not present on the URI, they will get appended as a query string:

Router.route('users.show', {id: 1, name: 'John', order: 'asc'}) // returns http://dommain.tld/users/1?name=John&order=asc

Contributing

$ composer install --dev
$ ./vendor/bin/phpunit
$ npm install -g grunt-cli
$ npm install
$ grunt travis --verbose

In addition to a full test suite, there is Travis integration.

Found a bug?

Please, let me know! Send a pull request or a patch. Questions? Ask! I will respond to all filed issues.

Inspiration

Although no code was copied, this package is greatly inspired by FOSJsRoutingBundle for Symfony.

License

This package is open-sourced software licensed under the MIT license