Laravel 使用闭包和名称进行路由

Laravel routing with Closures and Names

我很好奇,因为我找不到太多关于此的文档 - 如果我也想调用闭包,我该如何命名路由?

我找到了如何调用控制器函数,但没有找到如何命名路由。

命名路线:

Route::get( '{foo}', ['as' => 'foo.home', 'uses' => 'FooController@home'] );

带控制器调用的关闭路线:

Route::get( '{foo}', function() {
    $fooController = $app->make('FooController');
    return $fooController->callAction('home', $parameters = array());
});

但是我找不到如何将路由名称合并到第二个示例中。

您也可以将数组与 nameuses 一起使用:

Route::get('{foo}', array('name' => 'foo.home', 'uses' => function(){
    $fooController = $app->make('FooController');
    return $fooController->callAction('home', $parameters = array());
}));

它在没有 uses 的情况下也可以工作(Laravel 识别类型 Closure

Route::get('{foo}', array('name' => 'foo.home', function(){
    $fooController = $app->make('FooController');
    return $fooController->callAction('home', $parameters = array());
}));

最简单的方法是将其命名为 class

Route::get( '{foo}', function() {
  return (new $fooController)->homeMethod($parameters);
})->name('foohome');;