rossriley/stack-aura-router

将路由添加到请求对象的堆栈中间件

1.0 2016-03-31 10:32 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:00:49 UTC


README

使用的技术

您需要使用 Stack PHP 来构建您的应用程序

安装

最好通过 composer 完成,您只需要将此添加到(或忽略任何已存在的包)composer.json 文件中的 require 块中

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",
    ....
}

工作原理

此项目基于一个非常简单的概念。使用 Aura Router,这是一个非常优秀的解耦路由包,您可以使用它定义路由并将数据添加到 HTTP 请求对象中。

以下是一个启动应用程序的示例

首先配置您的路由

#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"]);
......

然后启动您的应用程序

#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);

如何使用编译后的路由。

由于您的 Stack 应用程序处理 HttpKernelInterface $request 实例,您可以直接从请求中获取路由详情

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

如您所见,此输出与您在 routes.php 文件中描述的路由相匹配。

同样,注册路由将输出以下内容

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

欢迎贡献

这是一个相对较新的项目,处于早期 alpha 阶段,尽管它已被几个相当大的项目在野外使用。欢迎提交拉取请求/改进建议。