首頁  >  文章  >  php框架  >  Laravel怎麼同時接收路由參數和查詢字串中的參數

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

藏色散人
藏色散人轉載
2021-03-04 11:22:202648瀏覽

下面由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刪除