[Laravel][Routing] 如何使用路由参数将参数传递给控制器

[Laravel][Routing] How to pass param to controller respective with route parameter

我遇到了一个问题,虽然我搜索了很多地方都没有找到答案。所以,我在这里寻求支持。 我想将参数传递给与路由中的参数对应的控制器函数。 请看下面的例子: 我想要这些路由到 Check 控制器,函数 getByTime($time)

Route::get('/hourly', 'Check@getByTime');
Route::get('/daily', 'Check@getByTime');
Route::get('/weekly', 'Check@getByTime');

class Check {
    function getByTime($time) {}
}

示例条件:

hourly: $time=1
daily: $time=24
weekly: $time = 24*7

我的意思是这样的:

Route::get('/hourly', 'Check@getByTime(1)');
Route::get('/daily', 'Check@getByTime(24)');
Route::get('/weekly', 'Check@getByTime(168)');

请帮我解决一下。 抱歉我的解释不当,感谢您的帮助。

就这么简单,如果你查看laravel文档你会发现解决方案easily.here就是link

顺便说一下,你可以像下面这样简单地做

Route::get('/hourly/{hour}', 'Check@getByTime');
Route::get('/daily/{day}', 'Check@getByTime');
Route::get('/weekly/{week}', 'Check@getByTime');
class Check {
    function getByTime($time) {}
}

并在 url 中传递参数,如

http://yourhost/hourly/1
http://yourhost/daily/24
http://yourhost/weekly/168

根据您的要求,您可以试试这个:

Route::get('/hourly', 'Check@getByTime')->defaults('hour', 1);

不确定我是否理解你的确切问题,但这会有所帮助

Route::get('{slug}', function ($slug){
   if ($slug == "hourly") {
       App::call('App\Http\Controllers\Check@getByTime', [1]);
   } else if ($slug == "daily") {
       App::call('App\Http\Controllers\Check@getByTime', [24]);
   } else if ($slug == "weekly") {
       App::call('App\Http\Controllers\Check@getByTime', [168]);
   }
});

但是你已经在所有路由的顶部添加了它。