Hubert

Routing

Als Standardrouter bringt hubert den AltoRouter mit.

Eine Route

$config = array(
    "routes" => array(
        "hello" => array(
            "route" => "/hello[/]", 
            "method" => "GET"
            "target" => function($request, $response, $args){
                echo "Hello-Route";
            }
        )
    )
);

Jede Route musss einen eindeutigen Namen haben, Im Beispiel ist dies hello. Eine Route kann aus drei Bestandteilen bestehen:

Route-Matching

Feste Routen werden nur ausgeführt, wenn diese exakt auf die Request Uri zutreffen:

$config = array(
    "routes" => array(
        "home" => array(
            "route" => "/", 
            "target" => function($request, $response, $args){
                echo "Hello World";
            }
        ),
        "hello" => array(
            "route" => "/hello", 
            "target" => function($request, $response, $args){
                echo "Hello-Route";
            }
        )
    )
);

Die Route "hello" trifft nur auf "/hello" zu, nicht auf "/hello/". Mann könnte "route" => "/hello/" verwenden, damit die Route zutrifft, wenn ein Slash am Ende steht, oder über [/]? am Ende der Route den letzten Slash optionalisieren:

$config = array(
    "routes" => array(
        "hello" => array(
            "route" => "/hello[/]?", 
            "target" => function($request, $response, $args){
                echo "Hello-Route";
            }
        )
    )
);

Parameter in der Route sehen wie folgt aus:

"mvc" => array(
    "route" => "/[:controller]/[:action]",
    "method" => "GET|POST",
    "target" => function($request, $response, $args){
        echo "Controller: {$args['controller']}, Action: {$args['action']}";
    }
),

Optionale Parameter enden auf "?"

"mvc" => array(
    "route" => "/[:controller]/[:action]?",
    "method" => "GET|POST",
    "target" => function($request, $response, $args){
        echo empty($args["action"]) ? "index"  : $args["action"];
    }
),

Weitere Informationen findest du auf altorouter.com

Urls bilden

$base = hubert()->router->getBasePath();
$url_home = hubert()->router->get("home");
$mvc_url = hubert()->router->get("mvc", ["controller" => "index", "action" => "index"])

Der Router bietet die Funktion getBasePath(), welche die Basis-Url der Anwendung liefert. Des Weiteren gibt es die Funktion get($name, $params = array(), $query = array()), über welche man Urls zu definierten Routen bilden kann.