如何通过 Laravel 5 中的路由将默认值传递给控制器​​?

How to pass default values to controller by routing in Laravel 5?

在laravel中,如果我想将参数传递给路由文件中的控制器

Route::get('user/sk/{id}'  , 'UsersController@findsk');

如果我想传递默认参数:

Route::get('user/{name?}', function ($name = 'John') {

     // how do I invoke my controller here?

     return $name;

});

如何合并这两个东西?有捷径吗?

Route::get('user/sk/{id}'  , 'UsersController@findsk'

   // can I add an array of default parameters here?

);

您可以作为默认参数传递给您的控制器,就像普通函数一样

Route::get('user/sk/{id}'  , 'UsersController@findsk');

UsersController

function findsk($id ='myVal'){

}

据我所知,不幸的是没有捷径。

注入一个可选参数:

Route::get('user/{name?}', function ($name = 'John') {
    $ctrl = new \App\Http\Controllers\UsersController();
    return $ctrl->findsk($name);
});

要注入一个可选参数和更多参数:
假设您有一个 $id 参数并且 UsersController@findsk 接受 $id$name

Route::get('user/{id}/{name?}', function ($id, $name = 'John') {
    $ctrl = new \App\Http\Controllers\UsersController();
    return $ctrl->findsk($id, $name);
});

从路由器向控制器注入一些东西:
假设要使用 url 作为开关。

Route::get('my-special-url', function () {
    $ctrl = new \App\Http\Controllers\UsersController();
    return $ctrl->findsk(1, 'Paul');
});