我想知道根据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
方法获取方法名称。
答案 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