我正在设置以下路线。
$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
,它只需要设备的参数,但这不适用于自定义函数,或者我无法弄清楚。
感谢任何帮助!
答案 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来读取它。
这是一个奇怪的解决方法,但现在正在努力。