.ini 格式的 Fat Free Framework 3.5 条件路由

Fat Free Framework 3.5 conditional routes in .ini format

我定义了我的 routes.ini 文件,其中包含多个条目,如下所示:

[routes]

GET /=PublicController->home
GET /login=PublicController->login
GET /logout=PublicController->logout
POST /auth=PublicController->auth
[...]

我想知道是否可以根据要检查的任意条件动态修改路由,例如会话变量等等。

有没有办法做类似的事情:

if ($f3->get('SESSION.user.level') == 'admin') {
    GET /=AdminController->home
} else {
    GET /=UserController->home
}

在 .ini 文件中?

没有。 但令人惊讶的是,您可以为此使用 php:

if ($f3->get('SESSION.user.level') == 'admin') {
    $f3->route('GET /','AdminController->home');
    $f3->config('admin.ini');
} else {
    $f3->route('GET /','UserController->home');
}

我一直在使用一种稍微不同的方法,我想我也会分享它。

在我的主 index.php 文件中,我寻找 url 组件,并根据

加载路由(并重载其他配置设置)
if(explode('/',$_SERVER['REQUEST_URI'])[1] === "admin"){
    $f3->config('../f3/app/config/config.admin.ini');
    $f3->config('../f3/app/config/routes.admin.ini');
}

我使用它而不是会话,因为路由器中使用的控制器可以处理到登录页面的重定向。你也可以继续使用ini文件中的路由,我更喜欢这样。