3

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

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

我的 routes.ini 示例:

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

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

我找到了如何上课:

get_class($this)

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

4

2 回答 2

5

我在这里找到了解决方案,它可能对某些人有所帮助。

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

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

所以 $tmp[0] 将包含类名,而 $tmp[1] 将包含方法名。

于 2013-05-20T10:11:06.903 回答
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 将包含任何路由查询变量。

示例 URL:http://localhost/user/edit/@id/@whatever

PARAMS[0]=/user/edit/foo/bar
PARAMS[id]=foo
PARAMS[whatever]=bar
于 2018-01-19T19:12:36.010 回答