我正在使用Laravel 5.4。我想使用如下的查询字符串:
tempsite.com/lessons?id=23
了解如何修改路线。可以通过以下方式提供路线。
Route::get('lessons/id={id}', ['as' => 'lessons.index', 'uses' => 'Lessons\LessonController@index']);
但是加上'?'不适合我。请尽快帮助我们提供解决方案。
答案 0 :(得分:0)
如果您使用的是资源丰富的控制器,那么您的所有路径都将为您处理,因此您只需添加
即可Route::resource('lessons', 'Lessons\LessonController');
然后,您可以使用路由模型绑定来绑定与该特定ID匹配的模型实例。
Route::model('lesson', Lesson::class);
这将在您的RouteServiceProvider中完成。
我还建议您仔细阅读laravel网站https://laravel.com/docs/5.4/routing上的以下文档。它提供了对路线如何工作以及如何构建路线的真正了解。
答案 1 :(得分:0)
而不是tempsite.com/lessons?id=23 传递它像tempsite.com/lessons/23 并在路线
Route::get('lessons/{id}', ['as' => 'lessons.index', 'uses' => 'Lessons\LessonController@index']);
获取控制器中的id,编写像这样的函数
public function index($id)
{
//do anything with $id from here
}
答案 2 :(得分:0)
无需在路由中定义查询字符串参数。您可以在控制器中返回查询字符串参数,如下所示:
网址示例: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时无法访问该网址,请参阅@DarkseidNG answer。
答案 3 :(得分:0)
我可以通过在网址上加上正斜杠来告知laravel在我的路线上接受查询字符串请求,
// web.php
Route::get('/path/', "Controller@action");
使用上述方法,mysite/path?foo=bar&name=john
不会引发404错误。