根据Slim 3中的URI路径更改路由文件

时间:2016-11-21 06:54:24

标签: php html slim slim-lang slim-3

好的所以我有4个文件夹都有自己的route.php。所以我想根据uri路径要求每个文件夹的路径。例如,如果我的网站路径是www.example.com/user,那么Slim框架将需要路径到控制器/用户/路由。我正在尝试使用中间件来实现这一点,但是当我测试它时,我得到了“调用成员函数错误”,所以我该如何解决这个问题。

以下是我的代码:

{{1}}

因此,在框架确定路径之前,然后添加所需的路径。但是某些事情没有正常运作,任何想法?

1 个答案:

答案 0 :(得分:0)

嗯,你不应该这样做,因为它不应该花很多时间来注册所有路线。

但是如果你想要todo,你需要对你的代码进行一些修改:

  1. $request->getAttribute('route')不返回路径,它返回slim

    的路由对象

    如果您想使用路径,请使用$request->getUri()->getPath()(它不是以/开头,因此路径f.ex为(/customRoute/test它返回customRoute/test

  2. 您需要在此上下文中使用$app $this是来自Pimple的ContainerInterface而不是苗条的应用

  3. 确保您没有在设置中将determineRouteBeforeAppMiddleware设置为true,因为它会在中间件执行之前检查要执行的路由。

  4. 这是一个正在运行的例子:

    $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();