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

koa*_*aok 4 routing laravel

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

Route::get('user/sk/{id}'  , 'UsersController@findsk');
Run Code Online (Sandbox Code Playgroud)

如果我想传递默认参数:

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

     // how do I invoke my controller here?

     return $name;

});
Run Code Online (Sandbox Code Playgroud)

我如何合并这两件事?有捷径吗?

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

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

);
Run Code Online (Sandbox Code Playgroud)

bor*_*Blu 5

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

注入一个可选参数:

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

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

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

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

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