Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Slim-如何为不同的路由拥有多个应用程序对象?_Php_.htaccess_Url Routing_Slim - Fatal编程技术网

PHP Slim-如何为不同的路由拥有多个应用程序对象?

PHP Slim-如何为不同的路由拥有多个应用程序对象?,php,.htaccess,url-routing,slim,Php,.htaccess,Url Routing,Slim,一个网站的不同部分/路线是否可能有多个Slim应用程序对象 例如: /api->拥有自己的Slim对象和自己的路由、配置等 /管理面板->拥有自己的Slim对象(可能有一些中间件) 我已经尝试使用以下方法修改Apache的.htaccess: RewriteRule ^api front_controller_api.inc.php [QSA,L] RewriteRule ^admin-panel front_controller_admin.inc.php [QSA,L] …但这似乎打破

一个网站的不同部分/路线是否可能有多个Slim应用程序对象

例如:

  • /api->拥有自己的Slim对象和自己的路由、配置等
  • /管理面板->拥有自己的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面板是请求URI的一部分。对于页面的每个部分,使用不同配置的不同应用程序对象、中间件等将更容易


有什么想法吗?

我不知道这样做是否正确,但您可以尝试这样的文件夹结构:

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'

您可以使用以下方法轻松完成:

$app->group('/api',函数()使用($app){
//您的api范围
$app->myCustom=“我的自定义”;
$app->get('/',函数()使用($app){
echo$app->myCustom;
});
});
//你的神奇中间件。
函数adminPanelMiddleware(){
echo“这是我的自定义中间件!
”; } $app->group('/admin panel',adminPanelMiddleware',函数()使用($app){ //您的管理面板范围 $app->anotherCustom=“另一个自定义”; $app->get('/',函数()使用($app){ echo$app->另一个自定义; }); });
我知道分组系统,但我试图避免使用它,因为我页面的两个部分都太不同,无法使用同一个$app对象。这听起来不错,似乎很管用。但是,如果我在public/folder中使用htaccess,我必须测试会发生什么。
$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;
    });
});