我正在生成一个我不理解的SLIM错误:{closure}()缺少参数1
我要做的是自动映射从url拉出的控制器到控制器文件,而不硬编码文件名。如果我去somesite.com/accounting,它工作得很好,但是当我注释掉硬编码路由到会计它不工作,错误丢失参数1 {closure}()。
$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();
当在路由中使用parameter时,你必须这样写你的路由路径:
$app->get('/:controller_name', function ($controller_name)
{
echo $controller_name;
$controller = new $controller_name;
});
所有参数都是带有:
前缀的字符串。如果需要,可以使用用斜杠分隔的多个参数。
使用上面的代码来声明路由,Slim将在内部用形参中的值填充$controller_name
参数。
访问/accounting
时,参数将保持值'accounting'
。
关于如何在Slim路由中使用参数的更多细节,请参阅路由参数文档。