【问题标题】:Get information about the route executed in Fat Free v3获取 Fat Free v3 中执行的路由信息
【发布时间】:2013-05-15 21:59:00
【问题描述】:

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

也就是说,我能得到哪个类和哪个方法会被执行吗?我有关于 PATTERN 变量中的模式 (URL) 的信息,但我不知道该 PATTERN 将执行哪个类和方法,正如在 routes.ini 中映射的那样。

我的 routes.ini 示例:

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

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

我找到了获取课程的方法:

get_class($this)

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

【问题讨论】:

    标签: routing fat-free-framework


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-16
        • 1970-01-01
        • 2017-02-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多