簡體   English   中英

帶有空參數的 SlimPHP 路由失敗

[英]SlimPHP route with empty parameter fails

我有這樣的路線

/product/update/{productId}/part/{partId}

例如,如果我嘗試使用一個或多個空參數調用它,它會失敗並給我一個 HTTP 404 Not Found

https://localhost/product/update//part/xyz123 

我不能讓它們都是可選的,因為我仍然需要完整的 URL,包括/part/

使用 Slim 3 是否無法將空參數傳遞給路由? 據我了解,在 URL 路徑中允許有多個連續的斜杠嗎?

您可以通過顯式定義它們將匹配的正則表達式來讓參數匹配空字符串:

$app->get('/product/update/{productId:.*}/part/{partId:.*}', function ($request, $response, $args) {                                                                 
    $productId = !empty($args['productId']) ?  $args['productId'] : 'not available';                                                                                 
    $partId = !empty($args['partId']) ?  $args['partId'] : 'not available';                                                                                          
    return (sprintf('Product ID: %s, Part ID: %s', $productId,  $partId));                                                                                       
});

// /product/update/1/part/2  -> Product ID: 1, Part ID: 2
// /product/update/1/part/   -> Product ID: 1, Part ID: not available
// /product/update//part/2   -> Product ID: not available, Part ID: 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM