2015-09-25 35 views
1

我生成一個SLIM的錯誤,我不明白:缺少參數1 {}關閉()修身路由器鏈接調用控制器沒有硬編碼在地圖

我所試圖做的是自動映射控制器拉出的URL到控制器文件,而不用硬編碼文件名。它工作正常,如果我去somesite.com/accounting,但是當我註釋掉硬編碼的路線佔這是行不通的,錯誤缺少參數1 {}關閉()。

$url = str_replace(WEB_PATH, '', $_SERVER['REQUEST_URI']); 
$split_url = explode('/', $url); 
$controller_name = $split_url[1]; 


$app = new \Slim\Slim(); 
$app->get('/', function() 
{ 
    echo 'home'; 
}); 
$app->get('/accounting', function() 
{ 
    $controller = new accounting; 
}); 
$app->get('/purchaseOrders', function() 
{ 
    $controller = new purchaseOrders; 
}); 
//this should work but does not... 
$app->get('/'. $controller_name, function ($controller_name) 
{ 
    echo $controller_name; 
    $controller = new $controller_name; 
}); 
$app->get('test.php', function() 
{ 
    $controller = new test; 
}); 
$app->run(); 

回答

1

當使用路由參數,你必須寫你的路線路徑,如下所示:

$app->get('/:controller_name', function ($controller_name) 
{ 
    echo $controller_name; 
    $controller = new $controller_name; 
}); 

所有參數都與前面加上一個:字符串。如果需要,您可以使用多個用斜槓分隔的參數。

使用上面的代碼申報路線,斯利姆將在內部填滿你$controller_name參數與參數值。

當訪問/accounting,爭論將持有的價值'accounting'

參考routing parameter documentation關於如何搭配修身路由使用參數的詳細信息。

+1

我會告訴你我得到真正失去了苗條的文檔,相同與altorouter ... – Iannazzi