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

问题描述 投票:0回答:2

我遇到了一个问题,尽管我搜索了很多地方,但找不到答案。所以,我在这里寻求支持。我想将参数传递给与路径中的参数相对应的控制器功能。请参见以下示例:我希望这些路由到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-5 routing laravel-routing
2个回答
1
投票

这很简单,如果您查看laravel文档,您将很容易找到解决方案。这里是link

通过这种方式,您可以像下面这样简单地完成它

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

并在参数中传递参数,如

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

根据您的要求,您可以尝试以下操作:

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

0
投票

不知道我是否了解您的确切问题,但这会帮您的忙

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]);
   }
});

但是您已将其添加到所有路线的顶部。

© www.soinside.com 2019 - 2024. All rights reserved.