我正在生成一个我不明白的SLIM错误:{closure}()
缺少参数1我要做的是自动将从网址中拉出的控制器映射到控制器文件,而不对文件名进行硬编码。如果我去somesite.com/accounting它工作正常,但是当我将硬编码路由注释到会计时它不起作用,错误{closure}()缺少参数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();
答案 0 :(得分:1)
在路线中使用参数时,您必须按如下方式编写路径路径:
$app->get('/:controller_name', function ($controller_name)
{
echo $controller_name;
$controller = new $controller_name;
});
所有参数都是前缀为:
的字符串。如果需要,可以使用由斜杠分隔的多个参数。
使用上面的代码声明你的路线,Slim会在内部用参数中的值填充你的$controller_name
参数。
访问/accounting
时,参数将保留值'accounting'
。
有关如何使用Slim路径参数的详细信息,请参阅routing parameter documentation。