2014-07-27 55 views
0

我設置了以下路線。SlimFramework - 通過自定義功能訪問路徑變量

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

我希望能夠到路由變量傳遞:設備的功能$ validate_user

我該怎麼辦呢?

對於功能render_bronzeservice,它只是期望設備的參數,但這不適用於自定義函數,或者我無法弄清楚。

任何幫助表示讚賞!

回答

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下一個功能。

這是一個奇怪的解決方法,但現在工作。