slim framework方法notFound不是有效的方法

时间:2016-05-31 19:11:27

标签: php api slim

我是第一次使用Slim框架创建一个api。

如果找不到网址,我想返回一个特定的回复。

我使用Slim框架的notFound函数如下:

$app->notFound(function () use ($app) {
    $res = array("msg"=>"page not found");
    $response->getBody()->write(json_encode($res));
    return $response;
});

但是当我在我的php页面中添加这行代码时,它会显示以下错误:

  

致命错误:第129行的C:\ wamp \ www \ api \ vendor \ slim \ slim \ Slim \ App.php中带有'方法notFound不是有效方法'的未捕获异常'BadMethodCallException'

     

BadMethodCallException:方法notFound不是第129行的C:\ wamp \ www \ api \ vendor \ slim \ slim \ Slim \ App.php中的有效方法

1 个答案:

答案 0 :(得分:3)

似乎你正在使用Slim 3和一些来自Slim 2的代码。
在3中,您可以通过在容器(mode details here)中添加处理程序或添加中间件来实现:
修改 - 正如@geggleto指出的那样,我忘了提及对于下面的代码,您还应该设置$settings['determineRouteBeforeAppMiddleware'] = true

/**
 * check if route exists
 */
$middleware = function (Request $request, Response $response, $next) {

    if (!$request->getAttribute('route')) {
        $res = array("msg"=>"page not found");
        $response->getBody()->write(json_encode($res));
        return $response;
    }

    return $next($request, $response);
};
$app->add($middleware);