Laravel:从路线中略过一些参数或调用Controller @ show而不添加“静态”添加

时间:2017-04-03 10:03:44

标签: laravel routes laravel-routing

  

Laravel:5.4

它有效,但我想知道是否有其他的解决方案。

我有这样的路线

Route::get('{any}-a{id}', function($any, $id) {
   return ArticleController::show($id);
})->where(['id' => '[0-9]+', 'any' => '.*']);

但这需要public **static** function show($id)

是否有任何其他解决方案可以从路线调用非静态功能,或者只是跳过 $ any 参数,例如->compact('id')(在路线中),或者: Route::get('#something-I-don't-know#-a{id}'), function(**$id**) { ... })

我想保留非静态 show 函数,因为它来自另一个Route的Route:resource:route('articles.show',$article->id)。我不想添加$ any参数。

感谢您的时间和答案:D

1 个答案:

答案 0 :(得分:1)

您可以随时执行此操作,而不是调用静态方法:

app()->make('App\Http\Controllers\ArticleController')->show($id);

完整代码如下:

Route::get('{any}-a{id}', function($any, $id) {
   return app()->make('App\Http\Controllers\ArticleController')->show($id);
})->where(['id' => '[0-9]+', 'any' => '.*']);