Silex getBaseUrl 和 getBasePath 为空

Silex getBaseUrl and getBasePath empty

我对 Silex 和学习有点陌生。在将一行插入数据库后,我试图 return 我的一个路由控制器中的基础 url 到 return 新路径。不管我尝试什么,它都是 returning 一个空字符串。这是该功能的一部分:

$app->match('/item', function(Request $request) use ($app) {

    $method = $request->getMethod();

    switch ($method) {
        //POST  
        case 'POST': //insert
            $data = array(
                'item' => $request->get('item'),
                'description'  => $request->get('description'),
                'quantityOnHand' => $request->get('quantityOnHand'),
                'reorderPoint' => $request->get('reorderPoint'),
                'supplier_id' => $request->get('supplier_id')
                ); //before to get supplier_id???? Or do it in ios

            $app['db']->insert('inventory', $data);
            $newId = (int) $app['db']->lastInsertId(); //cast int 
            $location = $request->getBaseUrl().'/inventory/id/'.$newId;

            return $app->json(array('status' => 201, 'id'=>$newId, 'location' =>$location), 201);

            break;
     }
}

$location 变量中的所有内容都正常工作,但基本路径除外。我错过了什么吗?我正在将 $request 注入控制器。当我 运行 这个它 returns /inventory/item/101 的位置,没有我的基地 url.

根据评论,OP 正在寻找的似乎是主机名,而不是基础 url,因此应该使用 getHost 方法。

不过请记住,要轻松生成 URL,您应该使用 UrlGenerator instead of crafting it manually. Silex has a default provider for this service