Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Slim中从顶级中间件中找到路由参数_Php_Slim_Middleware - Fatal编程技术网

Php 如何在Slim中从顶级中间件中找到路由参数

Php 如何在Slim中从顶级中间件中找到路由参数,php,slim,middleware,Php,Slim,Middleware,我正在尝试对我使用Slim框架编写的API进行API版本控制 我的所有版本化API如下所示: $app->get('/:version/book/search', function() {...}); 我正在尝试为此版本创建应用程序范围的路由条件,如下所示: \Slim\Route::setDefaultConditions(array( 'version' => 'v[3-6]' )); 因此,应该只允许版本号为v3、v4、v5和v6的API获得它 我的要求是在$app

我正在尝试对我使用Slim框架编写的API进行API版本控制

我的所有版本化API如下所示:

$app->get('/:version/book/search', function() {...});
我正在尝试为此版本创建应用程序范围的路由条件,如下所示:

\Slim\Route::setDefaultConditions(array(
    'version' => 'v[3-6]'
));
因此,应该只允许版本号为v3、v4、v5和v6的API获得它

我的要求是在$app->version中存储API调用的确切版本,然后根据需要更改特定于版本的代码。我已经创建了一个中间件,并将其添加到$app本身中,以便为每个API调用执行该中间件:

$app->add(new \GetVerMiddleware());

class GetVerMiddleware extends \Slim\Middleware
{
    public function call()
    {

        // HOW TO GET THE version route parameter??
        // ????
        $app->version = $version;
        $this->next->call();

    }
}

所以我想知道如何在GetVeridware中获取路由参数版本。有可能做到吗?我知道如何打印整个路线(),但我只对version参数感兴趣

好的,经过一些研究,我找到了解决方案,下面的链接特别有用:


我想解决办法差不多就在那里,抱歉

好的,经过一些研究,我找到了解决方案,下面的链接特别有用:

我想解决办法差不多就在那里,抱歉

$app->add(new \GetVerMiddleware());

class GetVerMiddleware extends \Slim\Middleware
{
    public function call()
    {

        $this->app->hook('slim.before.dispatch', array($this, 'onBeforeDispatch'));
        $this->next->call();

    }

    public function onBeforeDispatch()
    {
        $route_params = $this->app->router()->getCurrentRoute()->getParam('version');
        $this->app->version = $version;
    }
}