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