摘要:獲取路由參數的方式有很多,并且有個小坑,匯總如下。例如結果為結果為以上就是獲取路由參數的種方法。所有文章均已收錄至項目。
假設我們設置了一個路由參數:Laravel 獲取路由參數的方式有很多,并且有個小坑,匯總如下。
/** * 定義路由參數名稱分別為: param1,param2 */ Route::get("/{param1}/{param2}", "TestController@index");現在我們訪問 http://test.dev/1/2 在 TestController 中:
/** * 路由參數獲取方法 * * @param IlluminateHttpRequest $request 依賴注入 Request 實例,放在參數中什么位置都可以自動加載 * @param mixed $arg2 要獲取的路由參數 * @param mixed $arg1 要獲取的路由參數 */ public function index(Request $request, $arg2, $arg1) { /** * 方法一:按照 URL 中路由參數先后順序來獲取 * 注意:此種方式有個小坑,獲取的值只與順序有關,與名稱無關 */ echo $arg2; //結果為 1 ,因為 $arg2 在第一位,獲取的是第一個路由參數 param1 的值 echo $arg1; //結果為 2 ,因為 $arg1 在第二位,獲取的是第二個路由參數 param2 的值 /** * 方法二:按照路由參數名稱來獲取 * 注意:此處名稱是 Route 中定義的參數名,非上面方法中的參數名 */ $request->route("param1"); //結果為 1 ,獲取的是第一個路由參數 $request->route("param2"); //結果為 2 ,獲取的是第二個路由參數 /** * 方法三:使用 request() 輔助函數來獲取,效果同方法二 */ request()->route("param1"); //結果為 1 ,如果不帶路由參數名則返回當前的Route對象 request()->route("param2"); //結果為 2 ,如果不帶路由參數名則返回當前的Route對象 /** * 方法四:使用 Route Facade */ Route::input("param1"); //結果為 1 ,該方法必須帶路由參數名 Route::input("param2"); //結果為 2 ,該方法必須帶路由參數名 /** * 方法五:使用 IlluminateHttpRequest 實例動態屬性 */ $request->param1; //結果為 1 ,Laravel 5.4+ 可用 $request->param2; //結果為 2 ,Laravel 5.4+ 可用 // 或者 request()->param1; //結果為 1 ,Laravel 5.4+ 可用 request()->param2; //結果為 2 ,Laravel 5.4+ 可用 //或者 request("param1"); //結果為 1 ,Laravel 5.4+ 可用 request("param2"); //結果為 2 ,Laravel 5.4+ 可用 /** * 注意:Laravel 在處理動態屬性的優先級是,先從請求的數據(POST/GET)中查找,沒有的話再到路由參數中找。 * 例如:URL : http://test.dev/1/2?param1=a¶m2=b * $request->param1; request()->param1; request("param1"); //結果為 a * $request->param2; request()->param2; request("param2"); //結果為 b */ }
以上就是 Laravel 獲取路由參數的 5 種方法。
原創。 所有 Laravel 文章均已收錄至 laravel-tips 項目。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/25936.html
摘要:下面是剛才說的這些步驟對應的核心代碼收集路由和控制器里應用的中間件我們在前面的文章里已經詳細的解釋過中間件和路由的原理了,接下來就看看當請求最終找到了路由對應的控制器方法后是如何為控制器方法注入正確的參數并調用控制器方法的。 控制器 控制器能夠將相關的請求處理邏輯組成一個單獨的類, 通過前面的路由和中間件兩個章節我們多次強調Laravel應用的請求在進入應用后首現會通過Http Ker...
摘要:路由執行代碼展示控制器形式匿名函數形式控制器形式處理控制器參數解析返回過濾的從路徑或主機名解析出來的對應的參數數組,類似方式調用控制器的方法可以有自己的區別于路由參數的 Laravel 路由執行 代碼展示 protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMid...
在 Laravel 的控制器的構造方法或者成員方法,都可以通過類型約束的方式使用依賴注入,如: public function store(Request $request) { //TODO } 這里 $request 參數就使用了類型約束,Request 是類型約束的類型,它是一個類:IlluminateHttpRequest. 本文研究 Laravel 的依賴注入原理,為什么這樣定義...
摘要:本質是將為的請求轉化為追加的組內請求,對應的匿名函數依然是為的請求假如為,則返回優先從設置里面取值,沒有則生成單數形式的字符串,并將字符替換為小結資源類型的構造,實際上會被轉化為構造多個默認資源的路由,本質依然是基本構造 Laravel 路由 路由構造總覽 構造方法有: Route::get、Route::post、Route::put、Route::patch、Route::del...
摘要:解析出后將進入應用的請求對象傳遞給的方法,在方法負責處理流入應用的請求對象并返回響應對象。攜帶了本次迭代的值。通過這種方式讓請求對象依次流過了要通過的中間件,達到目的地的方法。 中間件(Middleware)在Laravel中起著過濾進入應用的HTTP請求對象(Request)和完善離開應用的HTTP響應對象(Reponse)的作用, 而且可以通過應用多個中間件來層層過濾請求、逐步完善...
閱讀 4751·2021-11-15 11:39
閱讀 2698·2021-11-11 16:55
閱讀 2206·2021-10-25 09:44
閱讀 3510·2021-09-22 16:02
閱讀 2441·2019-08-30 15:55
閱讀 3129·2019-08-30 13:46
閱讀 2670·2019-08-30 13:15
閱讀 1958·2019-08-30 11:12