我正在使用Laravel 5.4。我想要使用如下查詢字符串:如何在laravel中傳遞查詢字符串5.4
tempsite.com/lessons?id=23
爲了得到這個如何修改路由。可以通過以下方式給出路線。
Route::get('lessons/id={id}', ['as' => 'lessons.index', 'uses' => 'Lessons\[email protected]']);
但添加'?'不適合我。請儘早幫助我們提供解決方案。
我正在使用Laravel 5.4。我想要使用如下查詢字符串:如何在laravel中傳遞查詢字符串5.4
tempsite.com/lessons?id=23
爲了得到這個如何修改路由。可以通過以下方式給出路線。
Route::get('lessons/id={id}', ['as' => 'lessons.index', 'uses' => 'Lessons\[email protected]']);
但添加'?'不適合我。請儘早幫助我們提供解決方案。
如果使用的是足智多謀的控制器,你的路線,你都處理,這樣你就乾脆把
Route::resource('lessons', 'Lessons\LessonController');
然後,您可以使用路徑模型,結合其特定的ID匹配的模型實例綁定。
Route::model('lesson', Lesson::class);
這將在您的RouteServiceProvider中完成。
我還建議在laravel網站https://laravel.com/docs/5.4/routing上閱讀以下文檔。它對路線如何運作以及如何構建路線提供了非常好的見解。
而不是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
}
沒有必要在你的路由中定義查詢字符串參數。您可以在您的控制器像這樣返回的查詢字符串參數:
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答案。
這並不回答這個問題。雖然在這個特定的情況下,最好將它作爲一個有意義的URL傳遞,但是有時候querystrings仍然更好。 –