如何使用用户昵称创建路由组

时间:2018-10-30 10:57:14

标签: laravel routing laravel-5.7

现在,我已经为显示和修改用户个人资料设置了自定义路线:

代码:

Route::get('/{nickname}', 'User\ProfileController@index')->where(['nickname' => '[a-z0-9_]+');

Route::get('/{nickname}/edit', "User\ProfileController@edit")->where(['nickname' => ''[a-z0-9_]+''])->name('edit')->middleware('auth');

在两种情况下都可以看到,我使用了一个正则表达式,这是代码的重复。另外,我必须创建许多路由,这些路由的开头必须具有用户名。

问题:

那么我如何创建以授权用户的昵称开头的一组路由器?

1 个答案:

答案 0 :(得分:1)

以下是在Laravel中创建具有动态前缀的路由组的示例:

Route::prefix('{nickname}')->group(function () {
    Route::get('/', function($nickname) {
        echo "User nickname: $nickname";
    })->where(['nickname' => '[a-z]+']);

    Route::get('/edit', function($nickname) {
        echo "Edit user with nickname: $nickname";
    });

    Route::get('/post/edit/{id}', function($nickname, $id) {
        echo "User nickname = $nickname and POST ID = $id";
    });

    Route::get('/event/edit/{id}', 'UserController@editEvent');
});

在控制器方法中获取参数:

public function editEvent($nickname, $id) {
    echo "User nickname = $nickname and Event ID = $id";
}

注意:在具有动态前缀的一组路由中创建新路由时,必须在回调函数参数或控制器方法中将前缀的名称指定为变量。

>