SlimFramework - 通过自定义函数访问路径变量

时间:2014-07-27 08:14:51

标签: php slim

我正在设置以下路线。

$app->post(
    '/:device/admin/(/)',
    'get_user',
    $validate_user(
        array(
            'Admin',
            'Manager'
        ),'
        templates'
    ),'
    render_bronzeservice'
)->conditions(
    array('device'=>'(tablet|desktop|mobile)')
);

我希望能够将路径变量:device 传递给函数 $ validate_user

我该怎么做?

对于函数render_bronzeservice,它只需要设备的参数,但这不适用于自定义函数,或者我无法弄清楚。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

好吧我现在找到了一个解决方法,它很难看,但它会起作用。由于我在之前的函数中获取了用户数据,因此我在那里检查参数。

奇怪的是,由于某些原因,它不会将其作为字符串发送?但是将它作为路径对象发送给第一个函数。

所以我的get_user函数看起来像这样。

function get_user($route){
    global $user;
    global $device;

    //If there is any route device info...
    if(isset($route->getParams()['device'])){
        $device = $route->getParams()['device'];//set the device sent from the route.
    }

    if (isset($_SESSION['userid']) && !empty($_SESSION['userid'])) {
        //Do database lookup on userID and set to global $user
        //echo "User Found";
        $user = User::find(array('id' => $_SESSION['userid']));//sets the user super global variable from the database accordingly.
    }else{
        //echo "User Not Found<br/>";
    }
}

通过使用全局变量来跟踪设备,然后我可以在$ validate_user行的下一个函数中通过声明该函数中的global来读取它。

这是一个奇怪的解决方法,但现在正在努力。