自定义路线无法正常工作,并始终路由至 user.htm
的index.php
$routes = [
"/" => "index.htm",
"/user/id=@id" => "user.htm","/user/@id" => "user.htm",
];
foreach ($routes as $path => $file) {
$f3->route("GET ".$path,
function($f3){
global $file,$path;
echo View::instance()->render($file);
}
);
}
答案 0 :(得分:1)
试试这个:
$routes = [
"/" => "index.htm",
"/user/id=@id" => "user.htm",
"/user/@id" => "user.htm",
];
foreach ($routes as $path => $file)
{
$f3->route("GET " . $path,
function ($f3) use ($file)
{
echo View::instance()->render($file);
}
);
}
答案 1 :(得分:1)
Bryan Velastegui的回答是正确的。但是,这就是为什么你的代码没有工作的原因:
$f3->route()
将每个路由URI映射到一个函数(称为"路由处理程序"),而不执行它。foreach
循环将以下值连续存储到$file
变量中:index.html
,user.htm
和user.htm
(再次)。因此,在循环结束时,$file
保留user.htm
。$f3->run()
,框架就会执行与当前路由匹配的路由处理程序,当前路由本身引用全局$file
变量,持有user.htm
。通常,您不应该使用global关键字。这只会产生意想不到的问题,就像你所面临的问题一样。这对代码可维护性也没有帮助。
我建议您阅读有关use keyword的文档,以了解Bryan Velastegui的代码是如何工作的。