我是第一次使用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中的有效方法
答案 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);