是否可以为网站的不同部分/路线提供多个Slim应用程序对象。
例如:
我已尝试使用以下方法修改 Apache的.htaccess :
RewriteRule ^api front_controller_api.inc.php [QSA,L]
RewriteRule ^admin-panel front_controller_admin.inc.php [QSA,L]
...但这似乎打破了Slim的路由原则,因为Slim认为 / api 和 / admin-panel 是请求URI的一部分。对于页面的每个部分,使用不同的配置,中间件等具有不同的应用程序对象要容易得多。
有什么想法吗?
答案 0 :(得分:2)
我不知道这是否是正确的方法,但你尝试这样的文件夹结构:
public/
|-> api/
|-> index.php
|-> .htaccess
|-> admin-panel/
|-> index.php
|-> .htaccess
<强>更新强>
我“调查”了一些,并提出了另一种解决方案:
public/
|-> .htaccess
|-> admin-panel.php
|-> api.php
.htaccess
:
RewriteEngine On
# Some hosts may require you to use the `RewriteBase` directive.
# If you need to use the `RewriteBase` directive, it should be the
# absolute physical path to the directory that contains this htaccess file.
#
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^admin-panel/ admin-panel.php [QSA,L]
RewriteRule ^api/ api.php [QSA,L]
更新2:
使用此解决方案,您必须将所有内容分组到路径定义中的'/admin-panel'
或'/api'
。
答案 1 :(得分:0)
您可以使用groups:
轻松完成此操作$app->group('/api', function () use ($app){
//Your api scope
$app->myCustom = "my custom";
$app->get('/', function () use ($app) {
echo $app->myCustom;
});
});
//Your amazing middleware.
function adminPanelMiddleware() {
echo "This is my custom middleware!<br/>";
}
$app->group('/admin-panel', 'adminPanelMiddleware', function () use ($app){
//Your admin-panel scope
$app->anotherCustom = "another custom";
$app->get('/', function () use ($app) {
echo $app->anotherCustom;
});
});