.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文件中的路由,我更喜欢这样。
我定义了我的 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文件中的路由,我更喜欢这样。