2017-07-26 126 views
1

我正在使用Laravel 5.4。我想要使​​用如下查詢字符串:如何在laravel中傳遞查詢字符串5.4

tempsite.com/lessons?id=23 

爲了得到這個如何修改路由。可以通過以下方式給出路線。

Route::get('lessons/id={id}', ['as' => 'lessons.index', 'uses' => 'Lessons\[email protected]']); 

但添加'?'不適合我。請儘早幫助我們提供解決方案。

回答

0

如果使用的是足智多謀的控制器,你的路線,你都處理,這樣你就乾脆把

Route::resource('lessons', 'Lessons\LessonController'); 

然後,您可以使用路徑模型,結合其特定的ID匹配的模型實例綁定。

Route::model('lesson', Lesson::class); 

這將在您的RouteServiceProvider中完成。

我還建議在laravel網站https://laravel.com/docs/5.4/routing上閱讀以下文檔。它對路線如何運作以及如何構建路線提供了非常好的見解。

0

而不是tempsite.com/lessons?id=23 它傳遞這樣tempsite.com/lessons/23 ,在該路由

Route::get('lessons/{id}', ['as' => 'lessons.index', 'uses' => 'Lessons\[email protected]']); 

獲得ID在你的控制器,寫你的函數像這樣

public function index($id) 
{ 
    //do anything with $id from here 
} 
+0

這並不回答這個問題。雖然在這個特定的情況下,最好將它作爲一個有意義的URL傳遞,但是有時候querystrings仍然更好。 –

0

沒有必要在你的路由中定義查詢字符串參數。您可以在您的控制器像這樣返回的查詢字符串參數:

URL例如:tempsite.com/lessons?id=23

public function lessons(Request $request) 
{ 
    $request->get('id'); // Using injection 
    Request::get('id'); // Using the request facade 
    request()->get('id'); // Using the helper function 
} 

你甚至可以驗證參數:

public function lessons(Request $request) 
{ 
    $this->validate($request, ['id' => 'required|integer']); 
} 

注:如果您希望在省略ID的情況下使URL無法訪問,請參閱@DarkseidNG答案。