2015-09-25 43 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