我正在使用php飞行框架:http://flightphp.com/ 我想打电话给flight :: route();几次自动创建几个路由器。但我需要回调函数中的变量。
我正在尝试:
foreach($pages as $page) {
Flight::route("/" . $page['route'], function() {
// I need $page here
});
}
Flight::start();
$ pages是我创建的对象数组。当路由被触发时我需要那些对象。 我该怎么做?
也许有人可以帮我这个。 Flightphp框架有一个方法Flight :: set(" variable",value)和Flight :: get(" variable");
也许我能做到:
foreach($pages as $page) {
Flight::route("/" . $page['route'], function() {
$page = Flight::get("page");
var_dump($page);
// I need $page here
});
Flight::set("page", $page);
}
但这会让我总是有最后一页。虽然我可能想要转到第一页或任何其他页面。
答案 0 :(得分:0)
我终于做到了:
Flight::set("pages", $pages);
Flight::route("/@route", function($route) {
$pages = Flight::get("pages");
foreach($pages as $page) {
if($page['route'] == $route) {
include_once $page['controller'];
if(isset($activepage))$activepage->draw();
}
}
});
答案 1 :(得分:0)
查看框架文档(以前从未使用过它)看起来你可以做命名参数来路由你从网址中拉出参数的地方,例如:/ mypage / var1 / var2等你必须要循环遍历你的数组,并针对某种形式的模式生成flight :: route()位,而不是像你似乎正在做的那样识别页面名称并尝试根据它设置路由。
所以你的代码就像我想的那样
foreach($pages as $page) {
Flight::route('/@'.$page, function($localpage){
echo "I am, $localpage";
});
}
如果它看起来失败它也会给你一个传递给路线的所有参数的结果,所以你可以过滤掉这样的东西,尽管你必须过滤路线内的参数。 (将你的foreach移到回调中)
Flight::route('/', function($route){
// Array of named parameters
$route->params;
}, true);