在Laravel 5.5中按路由名称获取API URL

时间:2017-11-16 14:07:57

标签: php laravel laravel-routing laravel-5.5

有没有办法在Laravel 5.5中按名称获取路由URL时指定前缀?例如,

routes/web.php

Route::resource('users', 'UserController', ['only' => 'index', 'create', 'edit']);

routes/api.php

Routes::resource('users', 'UserController', ['only' => 'index', 'store', 'update', 'destroy']);

索引方法的两个路由都名为users.index,在调用php artisan route:list时已确认。但是,Web路由的URL为/users,api路由的URL为/api/users

要获取网络路线网址,我可以route('users.index')。有没有办法使用路由名称获取api路由的URL?

2 个答案:

答案 0 :(得分:3)

您可以通过as选项为资源控制器的路由指定前缀:

Route::resource('users', 'UserController', [
    'as' => 'your.prefix',
    'only' => 'index', 'store', 'update', 'destroy'
]);

答案 1 :(得分:0)

routes/api.php中,用前缀api包裹所有路由:

Route::name('api.')->group(function () {
  ...
});

然后在RouteServiceProvider

Route::prefix('api')
         ->middleware('api')
         ->namespace($this->namespace.'\Api')
         ->group(base_path('routes/api.php'));