The JSRouting Provider is a silex routing provider for javascript, that exposes routes to a javascript file. Then you can generate routes for use with javascript frameworks like AngularJS.
Add the provider to your composer.json
{
"requires": {
"rootlogin/jsrouting-provider": "~1.0"
}
}
Register the provider in your silex application:
$app->register(new rootLogin\JSRoutingProvider\Provider\SilexJSRoutingServiceProvider(), array(
"jsrouting.base_url" => "/",
"jsrouting.exposed_routes" => array("routeA", "routeB")
));
Set the route option expose to true.
$controllers->get("/hello", function() {
return "hello world"!
})->bind("hello")->getRoute()->setOption("expose",true);
Include and use it in your frontend like this.
<!-- Gets the full router with the routes -->
<script src="{{ path("jsrouting") }}"></script>
<!-- Or if you want only some parts you can get the router and the routes separately -->
<script src="{{ path("jsrouter") }}"></script><!-- Gets only the router -->
<script src="{{ path("jsroutes") }}"></script><!-- Gets only the routes -->
<!-- Get routes like this -->
<script>
console.log(router.generate("routeA"));
console.log(router.generate("routeB", {id: 3}));
</script>
If you want to use the console commands please install at least saxulum/saxulum-console. It will be automatically activated after you registered the provider.
- jsrouting:dump: This dumps the router with the known routes (buggy, ATM);
- jsrouting:dump:router.js: This only dumps the router.js. You need to add the routes manually.
Go to the base directory of the jsrouting-provider. Do a composer install
and enter vendor/bin/phpunit
.
Do a npm install
and enter node_modules/.bin/gulp test
. Or if you have installed gulp globally enter gulp test
.
Pull request are welcome. Or if you can't or want code you can also contribute by opening a ticket if you see something is wrong.
This project is in early development stages. No warranty if it kills your kittens or starts a nuclear war ;)