Laravel 5 [Laravel][Routing]如何使用route参数将参数传递给相应的控制器

Laravel 5 [Laravel][Routing]如何使用route参数将参数传递给相应的控制器,laravel-5,routing,laravel-routing,Laravel 5,Routing,Laravel Routing,我遇到了一个问题,虽然我搜索了很多地方,但没有找到答案。所以,我在这里请求支持。 我想将param传递到控制器函数中,该函数与路由中的param对应。 请参见以下示例: 我希望这些路由能够检查控制器,函数getByTime($time) 示例条件: hourly: $time=1 daily: $time=24 weekly: $time = 24*7 我的意思是: Route::get('/hourly', 'Check@getByTime(1)'); Route::get('/daily'

我遇到了一个问题,虽然我搜索了很多地方,但没有找到答案。所以,我在这里请求支持。 我想将param传递到控制器函数中,该函数与路由中的param对应。 请参见以下示例: 我希望这些路由能够检查控制器,函数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文档,您将很容易找到解决方案。以下是解决方案

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

Route::get('/hourly/{hour}', 'Check@getByTime');
Route::get('/daily/{day}', 'Check@getByTime');
Route::get('/weekly/{week}', 'Check@getByTime');
并在url中传递参数,如

http://yourhost/hourly/1
http://yourhost/daily/24
http://yourhost/weekly/168
根据您的要求,您可以尝试以下方法:

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

这是如此简单,如果您检查laravel文档,您将很容易找到解决方案

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

Route::get('/hourly/{hour}', 'Check@getByTime');
Route::get('/daily/{day}', 'Check@getByTime');
Route::get('/weekly/{week}', 'Check@getByTime');
并在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]);
   }
});

但是你已经在所有路线的顶部添加了这个。

不确定我是否理解了你的确切问题,但这会起到作用

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

但是你在所有路线的顶部都加了这个。

嗨,可能是我的错误解释让你误解了我的意思。我的意思是如果你访问
http://myhost/hourly
getByTime($time)
将自动获取
$time=1
。啊!,然后可以使用
Route::currentRouteName()来获取当前路由,然后可以有条件地处理它,如
路由::get(“/hourly”,”Check@getByTime')->名称('hour')类似的东西。对不起,我当然可以在控制器中手动完成。但我需要它被自动传递和生成。我的意思是,如果您请求
/小时
,您的
$time
必须为1;如果您请求
/daily
,您的
$time
必须为24。。。。或者像这样的事情。示例:函数getByTime($time){echo$time*2;}我不想更改函数中的代码,但我还需要:-请求
http://myhost/hourly
==>返回2-请求
http://myhost/daily
==>返回48请用默认值('hour',1)检查我的更新答案http://myhost/hourly
getByTime($time)
将自动获取
$time=1
。啊!,然后可以使用
Route::currentRouteName()来获取当前路由,然后可以有条件地处理它,如
路由::get(“/hourly”,”Check@getByTime')->名称('hour')类似的东西。对不起,我当然可以在控制器中手动完成。但我需要它被自动传递和生成。我的意思是,如果您请求
/小时
,您的
$time
必须为1;如果您请求
/daily
,您的
$time
必须为24。。。。或者像这样的事情。示例:函数getByTime($time){echo$time*2;}我不想更改函数中的代码,但我还需要:-请求
http://myhost/hourly
==>返回2-请求
http://myhost/daily
==>返回48请用默认值('hour',1)检查我的更新答案太神奇了。我做到了。这就是我需要的。非常感谢你,兄弟。@TinhNV欢迎:)太棒了。我做到了。这就是我需要的。非常感谢你,兄弟。@TinhNV欢迎:)