带有闭包和名称的 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());
}));

最简单的方法是将其称为类

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