获取有关在Fat Free v3中执行的路由的信息

时间:2013-05-15 21:59:00

标签: routing fat-free-framework

我想知道根据Fat Free Framework中beforeRoute方法中的当前URL执行哪条路由。

换句话说,我可以获得哪个类以及将执行哪个方法?我有关于PATTERN变量中的模式(URL)的信息,但我不知道将在routes.ini中映射的PATTERN执行哪个类和方法。

我的routes.ini示例:

GET /admin=Controllers\Admin\Admin->index

在这种情况下,我想发现该类是Controllers\Admin\Admin,方法是索引。

我找到了如何上课:

get_class($this)

但我还没有找到如何获取方法名称。请记住,我必须从beforeRoute方法获取方法名称。

2 个答案:

答案 0 :(得分:5)

我认为这是解决方案,它可能对某人有所帮助。

获取将在路线中执行的方法名称:

$hive = $f3->hive();
$tmp = explode('->',$hive['ROUTES'][$f3->get('PATTERN')][3][$hive['VERB']][0]);

所以$ tmp [0]将包含类名和 $ tmp [1]将包含de方法名称。

答案 1 :(得分:1)

短而甜蜜的版本

$request = $this->f3->get('PARAMS.0');

然后您可以检查$ request是否具有您要查找的内容

示例

if(!$this->f3->exists('SESSION.userId')){
    if (!$this->strpos($request,'login')) {
        $this->f3->reroute('/login');
        exit;
    }
}

有关PARAM的更多详情

PARAM的第一个数组索引包含URI,从那里PARAM将包含任何路由查询变量。

示例网址:http://localhost/user/edit/@id/@whatever

PARAMS[0]=/user/edit/foo/bar
PARAMS[id]=foo
PARAMS[whatever]=bar