在流明

时间:2016-09-12 15:48:47

标签: php routes lumen

Lumen有没有办法为我的所有路线添加前缀?

问题是我通过URI对我的API进行版本控制,对于我创建的每个组,我必须将前缀设置为'v1 / *',如:

$app->group(['prefix' => 'v1/students/', 'namespace' => 'App\Http\Controllers\Students\Data'], function () use ($app) {
    $app->get('/', 'StudentController@get');
    $app->get('/{id}', 'StudentController@getByID');
});

1 个答案:

答案 0 :(得分:2)

显然,Lumen中的路由组不会继承任何设置,这是为了使路由器更简单,更快速(see comment here)。

您最好的选择可能是为每个版本创建一个路由组,以便为​​该版本定义基本前缀和控制器命名空间。但是,您在这些路线组中的个别路线需要稍微冗长一些。示例如下所示:

// creates v1/students, v1/students/{id}
$app->group(['prefix' => 'v1', 'namespace' => 'App\Http\Controllers'], function () use ($app) {
    $app->get('students', 'Students\Data\StudentController@get');
    $app->get('students/{id}', 'StudentController@getByID');
});

// creates v2/students, v2/students/{id}, v2/teachers, v2/teachers/{id}
$app->group(['prefix' => 'v2', 'namespace' => 'App\Http\Controllers'], function () use ($app) {
    $app->get('students', 'Students\Data\StudentController@get');
    $app->get('students/{id}', 'Students\Data\StudentController@getByID');

    $app->get('teachers', 'Teachers\Data\TeacherController@get');
    $app->get('teachers/{id}', 'Teachers\Data\TeacherController@getByID');
});