首頁 > php框架 > Laravel > 主體

Laravel怎麼同時接收路由參數和查詢字串中的參數

藏色散人
發布: 2021-03-05 09:03:06
轉載
2650 人瀏覽過

下面由laravel教學欄位來介紹Laravel同時接收路由參數和查詢字串中的參數,希望對需要的朋友有幫助!

#Laravel捕捉路由參數

Laravel允許在controller方法中捕捉路由裡定義的參數,如下所示:

路由中定義參數:
Route::get('post/{id}', 'PostController@content');

控制器方法裡捕捉路由參數:

class PostController extends Controller
{

    public function content($id)
    {
        //
    }
}
登入後複製

Laravel同時捕獲路由參數和查詢字串參數

那在控制器裡怎麼既能捕捉到路由裡定義的參數又能接收到url查詢字串裡的參數呢,例如請求連結是這樣的http://example.com.cn/post/1?from=index
#引用官網文件的解釋

Dependency Injection & Route Parameters

If your controller method is also expecting input from a route parameter you should list your route parameters after your other dependencies

##. #就是說如果想要在控制器方法注入依賴時仍然能使用路由裡的參數,你需要把路由裡的參數列舉在方法依賴的後面,例如:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{

    public function content(Request $request, $id)
    {
        $from = $request->get('from')
    }
}
登入後複製

Laravel捕獲多個可選參數

此外laravel路由中我們也可以定義多個選用參數:

Route::get('/article/{id}/{source?}/{medium ?}/{campaign?}', 'ArticleController@detail')

在控制器方法中可選參數需要定義成預設參數:

    public function detail(Request $request, $id, $source = '', $mediun = '', $campaign = '')
    {
        //
    }
登入後複製

這樣定義完後路由裡URL裡可以傳遞0~3個可選參數,但是必須按照順序:即想傳第二個可選參數那麼第一個可選參數必須有。

URL範例:


http://example.com.cn/article/1/wx/h5?param1=val1¶m2=val2
在這個範例中"wx "
會傳遞給變數$source, "h5"會傳遞給變數$medium

##推薦:
最新的五個Laravel影片教學

#

以上是Laravel怎麼同時接收路由參數和查詢字串中的參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板