从 Slim 路由捕获的变量未定义

Captured variable from Slim route is undefined

我有以下精简路线,但由于某种原因无法识别 $cid 变量。 $cid var 应该从下面代码的第一行开始初始化

:cid

然后再往下用在响应数组的路径变量中

"path" => "/customers/".$cid."/vehicles/".$vehicle_id

这是完整的代码

$app->put('/customers/:cid/vehicles/?', function() use($app){

    $body = $app->request->getBody();
    $ds = getDataSource();

    $_PUT = array();
    parse_str($body, $_PUT);

    $vehicle_id = $ds->addVehicle( 
        $_PUT["owner"],
        $_PUT["year"],
        $_PUT["make"],
        $_PUT["model"],
        $_PUT["plates"],
        $_PUT["comments"] );

    if( $vehicle_id != null ){

        $response = array(
            "id" => $vehicle_id,
            "path" => "/customers/".$cid."/vehicles/".$vehicle_id
        );

        respond(200, $response);

    } else {
        $response = array(
            "Message"=> "Unable to add vehicle"
        );
        respond(400, $response);
    }
});

所以我有点困惑为什么我得到:

Slim Application Error

The application could not run because of the following error:
    Type: ErrorException
    Code: 8
    Message: Undefined variable: cid

有谁知道为什么会这样,或者如何解决?

嗯,这不是我最辉煌的时刻。

$app->put('/customers/:cid/vehicles/?', function() use($app){

应该是

$app->put('/customers/:cid/vehicles/?', function($cid) use($app){

必须将 var 传递给闭包。

笨蛋。