- 我的问题:**我目前正在尝试重构我的一些控制器。这样做时,我发现了以下两条路径:
Route::get('/events', [EventsController::class, 'eventsList'])->name('event-list');
Route::get('/courses', [EventsController::class, 'allCoursesList'])->name('all-events');
它们在前端显示不同的过滤器选项。
- 我想做的事:**
示例代码:
Route::get('/courses', [
'all' => 1,
EventsController::class, 'courseList'
])->name('all-events');
因此,能够传递变量,在本例中为all
到我的控制器。EventsController
因此,我可以在控制器中检查if
,并且仅使用一个函数(而不是两个函数)以不同的方式处理这些路由。
使用StackOverflow上的当前解决方案,用户可以使用:
'uses'=>'myController@index'
如果我这样做
Route::get('/courses', [
'all' => 1,
'uses' => 'EventsController@CourseList'
])->name('all-events');
出现以下错误:
Target class [EventsController] does not exist.
- 问题:**
在Laravel 9和10中,什么是当前正确的方式,从一个路由传递一个变量到一个控制器。
3条答案
按热度按时间wfauudbj1#
可以使用
Route
的defaults
方法将任意数据作为参数传递给路由:还有其他使用Route传递数据的方法。
7vux5j2d2#
Laravel版本8和更高版本不会自动应用名称空间前缀,这意味着当类名作为字符串传递时,需要使用完全限定类名(FQCN)。
例如:
如果对您的用例有意义,您还可以使用URL参数。例如,如果您的
Course
模型属于Category
模型,您可以执行以下操作:然后在控制器中,定义
allCoursesList
函数,如下所示:b4wnujal3#
您可以使用路径参数将变量从路径传递到控制器。
然后在你的控制器里你可以访问变量
如果你有多个参数,你可以像这样传递它们,你可以使用
?
作为可选参数。然后在你的控制器里你可以访问变量
访问查询参数
如果路由是
/events?timeframe=0&category=1
,您可以按如下方式访问查询参数