【问题标题】:slim framework Method notFound is not a valid method苗条的框架方法 notFound 不是有效的方法
【发布时间】:2016-09-29 22:41:50
【问题描述】:

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

如果找不到 url,我想返回一个特定的响应。

我使用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 中的未捕获异常 'BadMethodCallException' 和消息 'Method notFound is not a valid method'

BadMethodCallException: Method notFound is not a valid method in C:\wamp\www\api\vendor\slim\slim\Slim\App.php 第 129 行

【问题讨论】:

  • Slim m8 版本错误。您已安装 Slim 3。
  • 那么这不适用于 slim 3 吗?
  • 不,它不会起作用。

标签: php api slim


【解决方案1】:

您似乎正在使用 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);

【讨论】:

  • 这遗漏了一些非常关键的细节......比如determinRouteBeforeDispatch的slim选项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
  • 2022-09-23
  • 1970-01-01
相关资源
最近更新 更多