首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Slim的顶层中间件中找到路由参数

如何在Slim的顶层中间件中找到路由参数
EN

Stack Overflow用户
提问于 2016-02-20 19:39:22
回答 1查看 108关注 0票数 1

我正在尝试完成我使用Slim框架编写的API的API版本控制。

我所有的版本化API都是这样的:

代码语言:javascript
复制
$app->get('/:version/book/search', function() {...});

我正在尝试为这个版本创建一个应用程序范围的路由条件,如下所示:

代码语言:javascript
复制
\Slim\Route::setDefaultConditions(array(
    'version' => 'v[3-6]'
));

因此只允许版本号为v3、v4、v5和v6的API获取。

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

代码语言:javascript
复制
$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();

    }
}

所以我想知道如何获取GetVerMiddleware内部的路由参数版本。有可能做到这一点吗?我知道如何打印整个路由(link),但我只对version参数感兴趣。

EN

回答 1

Stack Overflow用户

发布于 2016-02-20 21:05:40

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

Slim Framework forum

代码语言:javascript
复制
$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;
    }
}

我认为解决方案就在那里,很抱歉!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35522700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档