我必須測驗這條路線,但我不確定如何導航到它。
Route::get('/{type}/Foo/{page}/{date}', 'FooController@index');
我了解 URL 通常在 URL 中的引數之前定義子目錄。
我使用過像這個例子這樣的 URL
Route::get('/Foo/{type}', 'FooController@index');
這將有一個看起來像的端點
/Foo?type=bar
有人知道如何測驗上述路線嗎?
uj5u.com熱心網友回復:
好吧,我認為您需要清除一下路由和查詢引數之間的區別。
在您的情況下,您正在嘗試使用實際上看起來像這樣的路由引數:
/{type}/Foo/{page}/{date}=>/myType/Foo/15/12-11-2021
Laravel 將其中的單詞{}視為可以通過請求檢索的變數,因此您可以執行以下操作:
$request->type
laravel 會將字串myType作為輸出回傳給你。
在您過去嘗試過的第二種情況下,您指的是查詢引數,它們也是$request. 將其視為 GET 請求的“主體”,但我并不是說要以任何方式將您的發布路線轉換為 GET :)
你的第二個網址的事情是:
/Foo/{type}不相似/Foo?type=bar
相反,它應該是:/Foo/bar
一般來說,查詢引數是當您大多數時候想要在 GET 端點(用于過濾、分頁等)中發送可選欄位時,路由引數適用于通向子目錄的必填欄位,例如/Foo/{FooId}/Bar/{BarId}
要記住的是,您必須小心您的路線,因為變數可能與其他路線發生沖突。
例如如下所示的路線:
Route::get('/foo/{fooId}', [FooController::class, 'getFoo']);
Route::get('/foo/bar', [BarController::class, 'getBar']);
會發生沖突,因為 laravel 將被bar視為變數,fooId因此您的第二條路線永遠無法訪問。
解決方案是正確訂購您的路線,例如:
Route::get('/foo/bar', [BarController::class, 'getBar']);
Route::get('/foo/{fooId}', [FooController::class, 'getFoo']);
因此,當您提供除 bar 之外的任何其他路由引數時,您將轉到第二條路由并使其按預期作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/485550.html
