【问题标题】:Laravel routing with Closures and Names带有闭包和名称的 Laravel 路由
【发布时间】:2015-04-04 01:27:16
【问题描述】:

我很好奇,因为我在这方面的文档中找不到太多 - 如果我还想调用闭包,我将如何命名路由?

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

命名路线:

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

带有控制器调用的关闭路由:

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

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

【问题讨论】:

    标签: php laravel closures


    【解决方案1】:

    最简单的方法是把它称为类

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

    【讨论】:

      【解决方案2】:

      您也可以将数组与 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());
      }));
      

      【讨论】:

      • 那么将闭包作为数组的一部分传递是完全可以接受的吗?太棒了!
      • 是的。它甚至被用于in the documentation(例如在将过滤器附加到路由下)
      猜你喜欢
      • 2015-07-07
      • 2022-01-14
      • 1970-01-01
      • 2019-03-07
      • 2018-11-30
      • 2019-05-22
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      相关资源
      最近更新 更多