好的所以我有4个文件夹都有自己的route.php。所以我想根据uri路径要求每个文件夹的路径。例如,如果我的网站路径是www.example.com/user,那么Slim框架将需要路径到控制器/用户/路由。我正在尝试使用中间件来实现这一点,但是当我测试它时,我得到了“调用成员函数错误”,所以我该如何解决这个问题。
以下是我的代码:
{{1}}
因此,在框架确定路径之前,然后添加所需的路径。但是某些事情没有正常运作,任何想法?
答案 0 :(得分:0)
嗯,你不应该这样做,因为它不应该花很多时间来注册所有路线。
但是如果你想要todo,你需要对你的代码进行一些修改:
$request->getAttribute('route')
不返回路径,它返回slim
如果您想使用路径,请使用$request->getUri()->getPath()
(它不是以/
开头,因此路径f.ex为(/customRoute/test
它返回customRoute/test
您需要在此上下文中使用$app
$this
是来自Pimple的ContainerInterface
而不是苗条的应用
确保您没有在设置中将determineRouteBeforeAppMiddleware
设置为true
,因为它会在中间件执行之前检查要执行的路由。
这是一个正在运行的例子:
$app = new \Slim\App();
$app->add(function($req, $res, $next) use ($app) {
if(strpos($req->getUri()->getPath(), "customPath" ) === 0) {
$app->get('/customPath/test', function ($req, $res, $arg) {
return $res->write("WUII");
});
}
return $next($req, $res);
});
$app->run();