2017 © Pedro Peláez
 

library stack-aura-router

Stack middleware to add Routes to the request object

image

rossriley/stack-aura-router

Stack middleware to add Routes to the request object

  • Thursday, March 31, 2016
  • by rossriley
  • Repository
  • 1 Watchers
  • 3 Stars
  • 1,460 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Stack Aura Router

Technologies Used

You need to build your app using Stack PHP, (*1)

Installation

Is best done via composer, all you need to do is add this to the (or ignore any packages that you already have) require block of your composer.json file:, (*2)

require: {
    ....
    "aura/router": "~2.0@dev" ,
    "rossriley/stack-aura-router": "1.0.*@dev",
    "stack/builder" : "dev-master",
    "stack/url-map" : "dev-master",
    "stack/run"     : "dev-master",
    ....
}

How it works

This project works on a very simple concept. Using Aura Router which is a lovely decoupled Routing package you can define your routes and add the data to an HTTP request object., (*3)

Here's an example of bootstrapping an application:, (*4)

First up configure your routes:, (*5)

#routes.php
<?php
use Aura\Router\RouterFactory;
$router_factory = new RouterFactory;
$router = $router_factory->newInstance();
$router->setValues(['controller' => 'YourNamespace\Controller\Main']);
$router->add("homepage", '/'')->addValues(["action"=>"index"]);
$router->add("signup", '/signup')->addValues(["action"=>"signup"]);
......

Then bootstrap your app:, (*6)

#public/index.php

$router = include(__DIR__."/../config/routes.php");

$app = new YourNamespace\Application;


$app = (new Stack\Builder())
        ->push('Stack\Session')
        ->push('Stack\Aura\RequestRouter', $router)
        ->resolve($app);

Stack\run($app);

How to use the compiled routes.

Since your Stack app handles an HttpKernelInterface $request instance, your route details can be fetched directly from the request, (*7)

$route = $request->attributes->get("route");
// This outputs with a request to /
Array (
    [controller] => YourNamespace\Controller\Main
    [action] => index
    [_name] => homepage
    [_route] => /
)

As you'll see this output matches the route you described in your routes.php file., (*8)

Similarly, the signup route would output the following:, (*9)

$route = $request->attributes->get("route");
// This outputs with a request to /signup
Array (
    [controller] => YourNamespace\Controller\Main
    [action] => signup
    [_name] => signup
    [_route] => /signup
)

Contributions Welcome

This is a relatively new project in early alpha stage, although it's being used in the wild by a few fairly large projects. Pull requests / ideas for improvement are most welcome., (*10)

The Versions

31/03 2016

dev-master

9999999-dev

Stack middleware to add Routes to the request object

  Sources   Download

MIT

The Requires

 

stack router

31/03 2016

1.0

1.0.0.0

Stack middleware to add Routes to the request object

  Sources   Download

MIT

The Requires

 

stack router