2016-05-31 17 views
3

Slimフレームワークを初めて使用してapiを作成しています。slim frameworkメソッドnotFoundは有効なメソッドではありません

urlが見つからない場合は、特定の応答を返したいと思います。

次のように私はスリムフレームワークのnotFound機能を使用します。

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

をしかし、私は私のPHPページにこのコード行を追加するときに、エラー、次の私を示しています

Fatal error: Uncaught exception 'BadMethodCallException' with message 'Method notFound is not a valid method' in C:\wamp\www\api\vendor\slim\slim\Slim\App.php on line 129

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

+0

間違ったバージョンを設定する必要があります。スリム3をインストールしました。 – geggleto

+0

これはスリムな3で動作しないのですか? –

+0

いいえ動作しません。 – geggleto

答えて

3

は、使用しているようですSlim 2のコードでスリム3
3では、コンテナ内にハンドラを追加するか(mode details here)、ミドルウェアを追加することによって行うことができます。
編集 - @geggletoが指摘するように、私はあなたの次のコードのためにそれを言及するのを忘れても、スリムM8の$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); 
+1

これはいくつかの非常に重要な詳細が欠落しています.... determinRouteBeforeDispatchのスリムオプションのようです – geggleto

関連する問題