鍍金池/ 問答/PHP/ Laravel5.5 框架中$request獲取不到路由傳過來的參數(shù)

Laravel5.5 框架中$request獲取不到路由傳過來的參數(shù)

路由 Route::match(['get', 'post'], '/test/{test}', 'AddCluesController@index'); // 添加線索

控制器:
public function index(Request $request)
{

echo $request->input('post'); // null
print_r($request->all()); // [] 

}

文檔中:
獲取指定輸入值
使用幾種簡(jiǎn)單的方法(不需要特別指定哪個(gè) HTTP 動(dòng)作),就可以訪問 IlluminateHttpRequest 實(shí)例中所有的用戶輸入。也就是說無論是什么樣的 HTTP 動(dòng)作,input 方法都可以被用來獲取用戶輸入數(shù)據(jù)。

是我的理解有誤嗎??

回答
編輯回答
舊時(shí)光

Route::match(['get', 'post'], '/test/{test}', 'AddCluesController@index');

getpost 交給同一個(gè)控制器同一個(gè)方法,不是推薦的方法。

假設(shè)目前你確實(shí)要這樣寫,無論是 get 還是 post ,你要獲取到 url /test/{test} 中的 {test} 的值,有兩種辦法:

1.在 index 方法中指定,如下:

public function index($test){
        //your logic.
    }

2.通過 request()->route('test'); 方法。

之所以要這樣,是因?yàn)檫@是路由參數(shù),請(qǐng)看官方文檔 Route Parameters

其他

對(duì)于 GET 請(qǐng)求,如果你是要獲取 url (http://www.baidu.com?q=xx&b=xxx)中 ? 后的參數(shù),是可以使用 request()->all() 獲取到的。

對(duì)于 POST 請(qǐng)求,你要獲取到 form 中的所有用戶的輸入,通過 request()->all() 也是能獲取到的。

當(dāng)然,你可以通過 request()->input(['key1','key2']); 的方式來獲取指定內(nèi)容。

具體的多看下文檔和源碼,就清楚了。

2017年3月11日 10:46
編輯回答
雨蝶

route(),不是 input()

剛剛寫錯(cuò)了.

input() 只是按請(qǐng)求方式, 自動(dòng)取$_GET, 還是$_POST里面的數(shù)據(jù). 不包括路徑上的參數(shù).

2018年6月22日 18:37
編輯回答
乞許

直接將參數(shù)傳到控制器中:如下

控制器這樣寫:
public function index(Request $request, $id)
{

//獲取傳入的test
$test = Test::find($id);

}

或者這樣寫
public function index(Request $request, Test $test)
{

//獲取傳入的test, 直接或根據(jù)參數(shù)獲取了相應(yīng)的model

}

2017年9月26日 18:01